init
This commit is contained in:
parent
4721a0745c
commit
9007071ae2
|
@ -0,0 +1,52 @@
|
|||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<DBN-PSQL>
|
||||
<case-options enabled="true">
|
||||
<option name="KEYWORD_CASE" value="lower" />
|
||||
<option name="FUNCTION_CASE" value="lower" />
|
||||
<option name="PARAMETER_CASE" value="lower" />
|
||||
<option name="DATATYPE_CASE" value="lower" />
|
||||
<option name="OBJECT_CASE" value="preserve" />
|
||||
</case-options>
|
||||
<formatting-settings enabled="false" />
|
||||
</DBN-PSQL>
|
||||
<DBN-SQL>
|
||||
<case-options enabled="true">
|
||||
<option name="KEYWORD_CASE" value="lower" />
|
||||
<option name="FUNCTION_CASE" value="lower" />
|
||||
<option name="PARAMETER_CASE" value="lower" />
|
||||
<option name="DATATYPE_CASE" value="lower" />
|
||||
<option name="OBJECT_CASE" value="preserve" />
|
||||
</case-options>
|
||||
<formatting-settings enabled="false">
|
||||
<option name="STATEMENT_SPACING" value="one_line" />
|
||||
<option name="CLAUSE_CHOP_DOWN" value="chop_down_if_statement_long" />
|
||||
<option name="ITERATION_ELEMENTS_WRAPPING" value="chop_down_if_not_single" />
|
||||
</formatting-settings>
|
||||
</DBN-SQL>
|
||||
<DBN-PSQL>
|
||||
<case-options enabled="true">
|
||||
<option name="KEYWORD_CASE" value="lower" />
|
||||
<option name="FUNCTION_CASE" value="lower" />
|
||||
<option name="PARAMETER_CASE" value="lower" />
|
||||
<option name="DATATYPE_CASE" value="lower" />
|
||||
<option name="OBJECT_CASE" value="preserve" />
|
||||
</case-options>
|
||||
<formatting-settings enabled="false" />
|
||||
</DBN-PSQL>
|
||||
<DBN-SQL>
|
||||
<case-options enabled="true">
|
||||
<option name="KEYWORD_CASE" value="lower" />
|
||||
<option name="FUNCTION_CASE" value="lower" />
|
||||
<option name="PARAMETER_CASE" value="lower" />
|
||||
<option name="DATATYPE_CASE" value="lower" />
|
||||
<option name="OBJECT_CASE" value="preserve" />
|
||||
</case-options>
|
||||
<formatting-settings enabled="false">
|
||||
<option name="STATEMENT_SPACING" value="one_line" />
|
||||
<option name="CLAUSE_CHOP_DOWN" value="chop_down_if_statement_long" />
|
||||
<option name="ITERATION_ELEMENTS_WRAPPING" value="chop_down_if_not_single" />
|
||||
</formatting-settings>
|
||||
</DBN-SQL>
|
||||
</code_scheme>
|
||||
</component>
|
|
@ -0,0 +1,455 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DBNavigator.Project.DataEditorManager">
|
||||
<record-view-column-sorting-type value="BY_INDEX" />
|
||||
<value-preview-text-wrapping value="true" />
|
||||
<value-preview-pinned value="false" />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.DataExportManager">
|
||||
<export-instructions>
|
||||
<create-header value="true" />
|
||||
<quote-values-containing-separator value="true" />
|
||||
<quote-all-values value="false" />
|
||||
<value-separator value="" />
|
||||
<file-name value="" />
|
||||
<file-location value="" />
|
||||
<scope value="GLOBAL" />
|
||||
<destination value="FILE" />
|
||||
<format value="EXCEL" />
|
||||
<charset value="UTF-8" />
|
||||
</export-instructions>
|
||||
</component>
|
||||
<component name="DBNavigator.Project.DatabaseBrowserManager">
|
||||
<autoscroll-to-editor value="false" />
|
||||
<autoscroll-from-editor value="true" />
|
||||
<show-object-properties value="true" />
|
||||
<loaded-nodes />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.DatabaseFileManager">
|
||||
<open-files />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.EditorStateManager">
|
||||
<last-used-providers />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.MethodExecutionManager">
|
||||
<method-browser />
|
||||
<execution-history>
|
||||
<group-entries value="true" />
|
||||
<execution-inputs />
|
||||
</execution-history>
|
||||
<argument-values-cache />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.ObjectDependencyManager">
|
||||
<last-used-dependency-type value="INCOMING" />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.ObjectQuickFilterManager">
|
||||
<last-used-operator value="EQUAL" />
|
||||
<filters />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.ScriptExecutionManager" clear-outputs="true">
|
||||
<recently-used-interfaces />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.Settings">
|
||||
<connections />
|
||||
<browser-settings>
|
||||
<general>
|
||||
<display-mode value="TABBED" />
|
||||
<navigation-history-size value="100" />
|
||||
<show-object-details value="false" />
|
||||
</general>
|
||||
<filters>
|
||||
<object-type-filter>
|
||||
<object-type name="SCHEMA" enabled="true" />
|
||||
<object-type name="USER" enabled="true" />
|
||||
<object-type name="ROLE" enabled="true" />
|
||||
<object-type name="PRIVILEGE" enabled="true" />
|
||||
<object-type name="CHARSET" enabled="true" />
|
||||
<object-type name="TABLE" enabled="true" />
|
||||
<object-type name="VIEW" enabled="true" />
|
||||
<object-type name="MATERIALIZED_VIEW" enabled="true" />
|
||||
<object-type name="NESTED_TABLE" enabled="true" />
|
||||
<object-type name="COLUMN" enabled="true" />
|
||||
<object-type name="INDEX" enabled="true" />
|
||||
<object-type name="CONSTRAINT" enabled="true" />
|
||||
<object-type name="DATASET_TRIGGER" enabled="true" />
|
||||
<object-type name="DATABASE_TRIGGER" enabled="true" />
|
||||
<object-type name="SYNONYM" enabled="true" />
|
||||
<object-type name="SEQUENCE" enabled="true" />
|
||||
<object-type name="PROCEDURE" enabled="true" />
|
||||
<object-type name="FUNCTION" enabled="true" />
|
||||
<object-type name="PACKAGE" enabled="true" />
|
||||
<object-type name="TYPE" enabled="true" />
|
||||
<object-type name="TYPE_ATTRIBUTE" enabled="true" />
|
||||
<object-type name="ARGUMENT" enabled="true" />
|
||||
<object-type name="DIMENSION" enabled="true" />
|
||||
<object-type name="CLUSTER" enabled="true" />
|
||||
<object-type name="DBLINK" enabled="true" />
|
||||
</object-type-filter>
|
||||
</filters>
|
||||
<sorting>
|
||||
<object-type name="COLUMN" sorting-type="NAME" />
|
||||
<object-type name="FUNCTION" sorting-type="NAME" />
|
||||
<object-type name="PROCEDURE" sorting-type="NAME" />
|
||||
<object-type name="ARGUMENT" sorting-type="POSITION" />
|
||||
</sorting>
|
||||
<default-editors>
|
||||
<object-type name="VIEW" editor-type="SELECTION" />
|
||||
<object-type name="PACKAGE" editor-type="SELECTION" />
|
||||
<object-type name="TYPE" editor-type="SELECTION" />
|
||||
</default-editors>
|
||||
</browser-settings>
|
||||
<navigation-settings>
|
||||
<lookup-filters>
|
||||
<lookup-objects>
|
||||
<object-type name="SCHEMA" enabled="true" />
|
||||
<object-type name="USER" enabled="false" />
|
||||
<object-type name="ROLE" enabled="false" />
|
||||
<object-type name="PRIVILEGE" enabled="false" />
|
||||
<object-type name="CHARSET" enabled="false" />
|
||||
<object-type name="TABLE" enabled="true" />
|
||||
<object-type name="VIEW" enabled="true" />
|
||||
<object-type name="MATERIALIZED VIEW" enabled="true" />
|
||||
<object-type name="NESTED TABLE" enabled="false" />
|
||||
<object-type name="COLUMN" enabled="false" />
|
||||
<object-type name="INDEX" enabled="true" />
|
||||
<object-type name="CONSTRAINT" enabled="true" />
|
||||
<object-type name="DATASET TRIGGER" enabled="true" />
|
||||
<object-type name="DATABASE TRIGGER" enabled="true" />
|
||||
<object-type name="SYNONYM" enabled="false" />
|
||||
<object-type name="SEQUENCE" enabled="true" />
|
||||
<object-type name="PROCEDURE" enabled="true" />
|
||||
<object-type name="FUNCTION" enabled="true" />
|
||||
<object-type name="PACKAGE" enabled="true" />
|
||||
<object-type name="TYPE" enabled="true" />
|
||||
<object-type name="TYPE ATTRIBUTE" enabled="false" />
|
||||
<object-type name="ARGUMENT" enabled="false" />
|
||||
<object-type name="DIMENSION" enabled="false" />
|
||||
<object-type name="CLUSTER" enabled="false" />
|
||||
<object-type name="DBLINK" enabled="true" />
|
||||
</lookup-objects>
|
||||
<force-database-load value="false" />
|
||||
<prompt-connection-selection value="true" />
|
||||
<prompt-schema-selection value="true" />
|
||||
</lookup-filters>
|
||||
</navigation-settings>
|
||||
<dataset-grid-settings>
|
||||
<general>
|
||||
<enable-zooming value="true" />
|
||||
<enable-column-tooltip value="true" />
|
||||
</general>
|
||||
<sorting>
|
||||
<nulls-first value="true" />
|
||||
<max-sorting-columns value="4" />
|
||||
</sorting>
|
||||
<tracking-columns>
|
||||
<columnNames value="" />
|
||||
<visible value="true" />
|
||||
<editable value="false" />
|
||||
</tracking-columns>
|
||||
</dataset-grid-settings>
|
||||
<dataset-editor-settings>
|
||||
<text-editor-popup>
|
||||
<active value="false" />
|
||||
<active-if-empty value="false" />
|
||||
<data-length-threshold value="100" />
|
||||
<popup-delay value="1000" />
|
||||
</text-editor-popup>
|
||||
<values-actions-popup>
|
||||
<show-popup-button value="true" />
|
||||
<element-count-threshold value="1000" />
|
||||
<data-length-threshold value="250" />
|
||||
</values-actions-popup>
|
||||
<general>
|
||||
<fetch-block-size value="100" />
|
||||
<fetch-timeout value="30" />
|
||||
<trim-whitespaces value="true" />
|
||||
<convert-empty-strings-to-null value="true" />
|
||||
<select-content-on-cell-edit value="true" />
|
||||
<large-value-preview-active value="true" />
|
||||
</general>
|
||||
<filters>
|
||||
<prompt-filter-dialog value="true" />
|
||||
<default-filter-type value="BASIC" />
|
||||
</filters>
|
||||
<qualified-text-editor text-length-threshold="300">
|
||||
<content-types>
|
||||
<content-type name="Text" enabled="true" />
|
||||
<content-type name="Properties" enabled="true" />
|
||||
<content-type name="XML" enabled="true" />
|
||||
<content-type name="DTD" enabled="true" />
|
||||
<content-type name="HTML" enabled="true" />
|
||||
<content-type name="XHTML" enabled="true" />
|
||||
<content-type name="SQL" enabled="true" />
|
||||
<content-type name="PL/SQL" enabled="true" />
|
||||
<content-type name="JSON" enabled="true" />
|
||||
<content-type name="JSON5" enabled="true" />
|
||||
<content-type name="YAML" enabled="true" />
|
||||
<content-type name="Bash" enabled="true" />
|
||||
</content-types>
|
||||
</qualified-text-editor>
|
||||
<record-navigation>
|
||||
<navigation-target value="VIEWER" />
|
||||
</record-navigation>
|
||||
</dataset-editor-settings>
|
||||
<code-editor-settings>
|
||||
<general>
|
||||
<show-object-navigation-gutter value="false" />
|
||||
<show-spec-declaration-navigation-gutter value="true" />
|
||||
<enable-spellchecking value="true" />
|
||||
<enable-reference-spellchecking value="false" />
|
||||
</general>
|
||||
<confirmations>
|
||||
<save-changes value="false" />
|
||||
<revert-changes value="true" />
|
||||
</confirmations>
|
||||
</code-editor-settings>
|
||||
<code-completion-settings>
|
||||
<filters>
|
||||
<basic-filter>
|
||||
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="function" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
|
||||
<filter-element type="OBJECT" id="schema" selected="true" />
|
||||
<filter-element type="OBJECT" id="role" selected="true" />
|
||||
<filter-element type="OBJECT" id="user" selected="true" />
|
||||
<filter-element type="OBJECT" id="privilege" selected="true" />
|
||||
<user-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="false" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</user-schema>
|
||||
<public-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="false" />
|
||||
<filter-element type="OBJECT" id="view" selected="false" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="false" />
|
||||
<filter-element type="OBJECT" id="index" selected="false" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="false" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="false" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="false" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="false" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="false" />
|
||||
<filter-element type="OBJECT" id="function" selected="false" />
|
||||
<filter-element type="OBJECT" id="package" selected="false" />
|
||||
<filter-element type="OBJECT" id="type" selected="false" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="false" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="false" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="false" />
|
||||
</public-schema>
|
||||
<any-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</any-schema>
|
||||
</basic-filter>
|
||||
<extended-filter>
|
||||
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="function" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
|
||||
<filter-element type="OBJECT" id="schema" selected="true" />
|
||||
<filter-element type="OBJECT" id="user" selected="true" />
|
||||
<filter-element type="OBJECT" id="role" selected="true" />
|
||||
<filter-element type="OBJECT" id="privilege" selected="true" />
|
||||
<user-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</user-schema>
|
||||
<public-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</public-schema>
|
||||
<any-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</any-schema>
|
||||
</extended-filter>
|
||||
</filters>
|
||||
<sorting enabled="true">
|
||||
<sorting-element type="RESERVED_WORD" id="keyword" />
|
||||
<sorting-element type="RESERVED_WORD" id="datatype" />
|
||||
<sorting-element type="OBJECT" id="column" />
|
||||
<sorting-element type="OBJECT" id="table" />
|
||||
<sorting-element type="OBJECT" id="view" />
|
||||
<sorting-element type="OBJECT" id="materialized view" />
|
||||
<sorting-element type="OBJECT" id="index" />
|
||||
<sorting-element type="OBJECT" id="constraint" />
|
||||
<sorting-element type="OBJECT" id="trigger" />
|
||||
<sorting-element type="OBJECT" id="synonym" />
|
||||
<sorting-element type="OBJECT" id="sequence" />
|
||||
<sorting-element type="OBJECT" id="procedure" />
|
||||
<sorting-element type="OBJECT" id="function" />
|
||||
<sorting-element type="OBJECT" id="package" />
|
||||
<sorting-element type="OBJECT" id="type" />
|
||||
<sorting-element type="OBJECT" id="dimension" />
|
||||
<sorting-element type="OBJECT" id="cluster" />
|
||||
<sorting-element type="OBJECT" id="dblink" />
|
||||
<sorting-element type="OBJECT" id="schema" />
|
||||
<sorting-element type="OBJECT" id="role" />
|
||||
<sorting-element type="OBJECT" id="user" />
|
||||
<sorting-element type="RESERVED_WORD" id="function" />
|
||||
<sorting-element type="RESERVED_WORD" id="parameter" />
|
||||
</sorting>
|
||||
<format>
|
||||
<enforce-code-style-case value="true" />
|
||||
</format>
|
||||
</code-completion-settings>
|
||||
<execution-engine-settings>
|
||||
<statement-execution>
|
||||
<fetch-block-size value="100" />
|
||||
<execution-timeout value="20" />
|
||||
<debug-execution-timeout value="600" />
|
||||
<focus-result value="false" />
|
||||
<prompt-execution value="false" />
|
||||
</statement-execution>
|
||||
<script-execution>
|
||||
<command-line-interfaces />
|
||||
<execution-timeout value="300" />
|
||||
</script-execution>
|
||||
<method-execution>
|
||||
<execution-timeout value="30" />
|
||||
<debug-execution-timeout value="600" />
|
||||
<parameter-history-size value="10" />
|
||||
</method-execution>
|
||||
</execution-engine-settings>
|
||||
<operation-settings>
|
||||
<transactions>
|
||||
<uncommitted-changes>
|
||||
<on-project-close value="ASK" />
|
||||
<on-disconnect value="ASK" />
|
||||
<on-autocommit-toggle value="ASK" />
|
||||
</uncommitted-changes>
|
||||
<multiple-uncommitted-changes>
|
||||
<on-commit value="ASK" />
|
||||
<on-rollback value="ASK" />
|
||||
</multiple-uncommitted-changes>
|
||||
</transactions>
|
||||
<session-browser>
|
||||
<disconnect-session value="ASK" />
|
||||
<kill-session value="ASK" />
|
||||
<reload-on-filter-change value="false" />
|
||||
</session-browser>
|
||||
<compiler>
|
||||
<compile-type value="KEEP" />
|
||||
<compile-dependencies value="ASK" />
|
||||
<always-show-controls value="false" />
|
||||
</compiler>
|
||||
<debugger>
|
||||
<debugger-type value="JDBC" />
|
||||
<use-generic-runners value="true" />
|
||||
</debugger>
|
||||
</operation-settings>
|
||||
<ddl-file-settings>
|
||||
<extensions>
|
||||
<mapping file-type-id="VIEW" extensions="vw" />
|
||||
<mapping file-type-id="TRIGGER" extensions="trg" />
|
||||
<mapping file-type-id="PROCEDURE" extensions="prc" />
|
||||
<mapping file-type-id="FUNCTION" extensions="fnc" />
|
||||
<mapping file-type-id="PACKAGE" extensions="pkg" />
|
||||
<mapping file-type-id="PACKAGE_SPEC" extensions="pks" />
|
||||
<mapping file-type-id="PACKAGE_BODY" extensions="pkb" />
|
||||
<mapping file-type-id="TYPE" extensions="tpe" />
|
||||
<mapping file-type-id="TYPE_SPEC" extensions="tps" />
|
||||
<mapping file-type-id="TYPE_BODY" extensions="tpb" />
|
||||
</extensions>
|
||||
<general>
|
||||
<lookup-ddl-files value="true" />
|
||||
<create-ddl-files value="false" />
|
||||
<synchronize-ddl-files value="true" />
|
||||
<use-qualified-names value="false" />
|
||||
<make-scripts-rerunnable value="true" />
|
||||
</general>
|
||||
</ddl-file-settings>
|
||||
<general-settings>
|
||||
<regional-settings>
|
||||
<date-format value="MEDIUM" />
|
||||
<number-format value="UNGROUPED" />
|
||||
<locale value="SYSTEM_DEFAULT" />
|
||||
<use-custom-formats value="false" />
|
||||
</regional-settings>
|
||||
<environment>
|
||||
<environment-types>
|
||||
<environment-type id="development" name="Development" description="Development environment" color="-2430209/-12296320" readonly-code="false" readonly-data="false" />
|
||||
<environment-type id="integration" name="Integration" description="Integration environment" color="-2621494/-12163514" readonly-code="true" readonly-data="false" />
|
||||
<environment-type id="production" name="Production" description="Productive environment" color="-11574/-10271420" readonly-code="true" readonly-data="true" />
|
||||
<environment-type id="other" name="Other" description="" color="-1576/-10724543" readonly-code="false" readonly-data="false" />
|
||||
</environment-types>
|
||||
<visibility-settings>
|
||||
<connection-tabs value="true" />
|
||||
<dialog-headers value="true" />
|
||||
<object-editor-tabs value="true" />
|
||||
<script-editor-tabs value="false" />
|
||||
<execution-result-tabs value="true" />
|
||||
</visibility-settings>
|
||||
</environment>
|
||||
</general-settings>
|
||||
</component>
|
||||
<component name="DBNavigator.Project.StatementExecutionManager">
|
||||
<execution-variables />
|
||||
</component>
|
||||
</project>
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding" addBOMForNewFiles="with NO BOM" />
|
||||
</project>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="ignoredIdentifiers">
|
||||
<list>
|
||||
<option value="class_examples.test_survey.survey" />
|
||||
<option value="test.test_data_excise.read_yml" />
|
||||
</list>
|
||||
</option>
|
||||
</inspection_tool>
|
||||
</profile>
|
||||
</component>
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.6" project-jdk-type="Python SDK" />
|
||||
</project>
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/pytest_book.iml" filepath="$PROJECT_DIR$/.idea/pytest_book.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/chapter7unit/class_examples" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/chapter9selenium/test" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/chapter11_BDD/pytestbdd" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/chapter10appium/Pappium-youdao-demo" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/chapter12/Mock" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/chapter5" isTestSource="false" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/src/chapter7unit/code_examples" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
<component name="TestRunnerService">
|
||||
<option name="projectConfiguration" value="pytest" />
|
||||
<option name="PROJECT_TEST_RUNNER" value="pytest" />
|
||||
</component>
|
||||
</module>
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -0,0 +1,7 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-05-13 21:02
|
||||
# File: setup.py
|
||||
|
||||
from setuptools import setup, find_packages
|
||||
|
||||
setup(name="Utils", packages=find_packages())
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-04-13 15:11
|
||||
# File: __init__.py
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-04-13 15:32
|
||||
# File: __init__.py.py
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-04-13 15:32
|
||||
# File: __init__.py.py
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,42 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
FOSS_LICENSES = ['Apache 2.0', 'MIT', 'GPL', 'BSD']
|
||||
|
||||
PYTHON_PKGS = ['pytest-automationtest', 'requests-api', 'django-web', 'cookiecutter-项目模板']
|
||||
|
||||
|
||||
class Package:
|
||||
def __init__(self, name, license):
|
||||
self.name = name
|
||||
self.license = license
|
||||
|
||||
@property
|
||||
def is_open_source(self):
|
||||
return self.license in FOSS_LICENSES
|
||||
|
||||
|
||||
class Person:
|
||||
def __init__(self, name, gender):
|
||||
self.name = name
|
||||
self.gender = gender
|
||||
self._skills = ['eating', 'sleeping']
|
||||
|
||||
def learn(self, skill):
|
||||
self._skills.append(skill)
|
||||
|
||||
@property
|
||||
def looks_like_a_programmer(self):
|
||||
return any(
|
||||
package in self._skills
|
||||
for package in PYTHON_PKGS
|
||||
)
|
||||
|
||||
|
||||
class Woman(Person):
|
||||
def __init__(self, name):
|
||||
super().__init__(name, '女')
|
||||
|
||||
|
||||
class Man(Person):
|
||||
def __init__(self, name):
|
||||
super().__init__(name, '男')
|
|
@ -0,0 +1,36 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import operator
|
||||
|
||||
import pytest
|
||||
|
||||
from .foobar import Package, Woman, Man
|
||||
|
||||
PACKAGES = [
|
||||
Package('requests-api', 'Apache 2.0'),
|
||||
Package('django-web', 'BSD'),
|
||||
Package('pytest-automationtest', 'MIT'),
|
||||
]
|
||||
|
||||
|
||||
@pytest.fixture(params=PACKAGES, ids=(operator.attrgetter('name')))
|
||||
def python_package(request):
|
||||
return request.param
|
||||
|
||||
|
||||
@pytest.mark.parametrize('person', [
|
||||
Woman('lindafang'), Woman('nanzhang'),
|
||||
Man('wenli'), Woman('mingzhao'), Man('dongjin')
|
||||
], ids=())
|
||||
def test_become_a_programmer(person, python_package):
|
||||
person.learn(python_package.name)
|
||||
print(person._skills)
|
||||
assert person.looks_like_a_programmer
|
||||
|
||||
|
||||
def test_is_open_source(python_package):
|
||||
assert python_package.is_open_source
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
pytest.main()
|
|
@ -0,0 +1,32 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import pytest
|
||||
|
||||
# 这是一个英国游戏,逢3就fizz,逢5就buzz,如果是3,5的倍数,则fizzbuzz
|
||||
# 类似中国的逢3或3的倍数就敲一下桌子,其他就说出来1,2,敲,4,5,敲,7,8,敲,10,11,敲,敲,14
|
||||
RULES = (
|
||||
(3 * 5, "FizzBuzz"),
|
||||
(3, "Fizz"),
|
||||
(5, "Buzz"),
|
||||
)
|
||||
|
||||
|
||||
def fizzbuzz(number):
|
||||
for div_number, substitution in RULES:
|
||||
if not number % div_number:
|
||||
return substitution
|
||||
return str(number)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'number, word', [
|
||||
(1, '1'),
|
||||
(3, 'Fizz'),
|
||||
(5, 'Buzz'),
|
||||
(10, 'Buzz'),
|
||||
(15, 'FizzBuzz'),
|
||||
(16, '16')
|
||||
]
|
||||
)
|
||||
def test_fizzbuzz(number, word):
|
||||
assert fizzbuzz(number) == word
|
|
@ -0,0 +1,12 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import pytest
|
||||
|
||||
|
||||
@pytest.fixture(params=['apple', 'banana'])
|
||||
def fruit(request):
|
||||
return request.param
|
||||
|
||||
|
||||
def test_fruit(fruit):
|
||||
print('这是我要输入的测试数据:我今天吃的是%s' % fruit)
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,54 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import pytest
|
||||
|
||||
from sushi import Restaurant, Sushi
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def fooshi_bar():
|
||||
"""Returns a Restaurant instance with a great menu."""
|
||||
return Restaurant(
|
||||
'Fooshi Bar',
|
||||
location='Buenos Aires',
|
||||
menu=[
|
||||
'Ebi Nigiri',
|
||||
'Edamame',
|
||||
'Inarizushi',
|
||||
'Kappa Maki',
|
||||
'Miso Soup',
|
||||
'Sake Nigiri',
|
||||
'Tamagoyaki',
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture(scope='session')
|
||||
def recipes():
|
||||
"""Return a map from types of sushi to ingredients."""
|
||||
return {
|
||||
'California Roll': ['Rice', 'Cucumber', 'Avocado', 'Crab'],
|
||||
'Ebi Nigiri': ['Shrimp', 'Rice'],
|
||||
'Inarizushi': ['Fried tofu', 'Rice'],
|
||||
'Kappa Maki': ['Cucumber', 'Rice', 'Nori'],
|
||||
'Maguro Nigiri': ['Tuna', 'Rice', 'Nori'],
|
||||
'Sake Nigiri': ['Salmon', 'Rice', 'Nori'],
|
||||
'Tamagoyaki': ['Fried egg', 'Rice', 'Nori'],
|
||||
'Tsunamayo Maki': ['Tuna', 'Mayonnaise'],
|
||||
}
|
||||
|
||||
|
||||
@pytest.fixture(params=[
|
||||
'California Roll',
|
||||
'Ebi Nigiri',
|
||||
'Inarizushi',
|
||||
'Kappa Maki',
|
||||
'Maguro Nigiri',
|
||||
'Sake Nigiri',
|
||||
'Tamagoyaki',
|
||||
'Tsunamayo Maki',
|
||||
])
|
||||
def sushi(recipes, request):
|
||||
"""Create a Sushi instance based on recipes."""
|
||||
name = request.param
|
||||
return Sushi(name, ingredients=recipes[name])
|
|
@ -0,0 +1,30 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
class Restaurant:
|
||||
def __init__(self, name, location, menu=None):
|
||||
if not menu:
|
||||
raise ValueError
|
||||
|
||||
self.name = name
|
||||
self.location = location
|
||||
self.menu = menu
|
||||
|
||||
|
||||
class Sushi:
|
||||
def __init__(self, name, ingredients=None):
|
||||
if not ingredients:
|
||||
raise ValueError
|
||||
|
||||
self.name = name
|
||||
self.ingredients = ingredients
|
||||
|
||||
def __contains__(self, ingredient):
|
||||
return ingredient in self.ingredients
|
||||
|
||||
@property
|
||||
def is_vegetarian(self):
|
||||
for ingredient in ['Crab', 'Salmon', 'Shrimp', 'Tuna']:
|
||||
if ingredient in self:
|
||||
return False
|
||||
return True
|
|
@ -0,0 +1,23 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import pytest
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'sushi',
|
||||
['Kappa Maki', 'Tamagoyaki', 'Inarizushi'],
|
||||
indirect=True,
|
||||
)
|
||||
@pytest.mark.parametrize(
|
||||
'side_dish',
|
||||
['Edamame', 'Miso Soup'],
|
||||
)
|
||||
def test_fooshi_serves_vegetarian_sushi(fooshi_bar, sushi, side_dish):
|
||||
assert sushi.is_vegetarian
|
||||
assert sushi.name in fooshi_bar.menu
|
||||
assert side_dish in fooshi_bar.menu
|
||||
|
||||
|
||||
def test_sushi(sushi):
|
||||
assert sushi.name
|
||||
assert sushi.ingredients
|
Binary file not shown.
|
@ -0,0 +1,39 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import unittest
|
||||
|
||||
|
||||
class Client:
|
||||
def get(self, url, *args, **kwargs):
|
||||
# Send a real request based on the given parameters
|
||||
pass
|
||||
|
||||
|
||||
class TestResponse:
|
||||
def __init__(self, method, url, *args, **kwargs):
|
||||
if 'foobar' in url:
|
||||
self.status = 404
|
||||
self.reason = 'foobar'
|
||||
else:
|
||||
self.status = 200
|
||||
self.reason = None
|
||||
|
||||
|
||||
class TestClient(Client):
|
||||
def get(self, url, *args, **kwargs):
|
||||
return TestResponse('get', url)
|
||||
|
||||
|
||||
class TestScrapingTool(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.client = TestClient()
|
||||
|
||||
def test_success(self):
|
||||
response = self.client.get('https://github.com/pytest-dev')
|
||||
self.assertEqual(response.status, 200)
|
||||
self.assertEqual(response.reason, None)
|
||||
|
||||
def test_failure(self):
|
||||
response = self.client.get('foobar')
|
||||
self.assertEqual(response.status, 404)
|
||||
self.assertEqual(response.reason, 'foobar')
|
|
@ -0,0 +1,19 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-05-03 19:45
|
||||
# File: test_unittest_mock.py
|
||||
|
||||
from unittest import mock
|
||||
|
||||
import pytest
|
||||
|
||||
config = {"mykey": "ORIGINAL"}
|
||||
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
@mock.patch.dict(config, {"mykey": "MOCKED"})
|
||||
def my_fixture():
|
||||
return config["mykey"]
|
||||
|
||||
|
||||
def test_foobar(my_fixture):
|
||||
assert my_fixture == "MOCKED"
|
|
@ -0,0 +1,3 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-04-13 15:11
|
||||
# File: __init__.py
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,20 @@
|
|||
# Author: lindafang
|
||||
# File: test_first.py
|
||||
import pytest
|
||||
|
||||
|
||||
def test_1():
|
||||
print("\n这是第一个测试方法")
|
||||
|
||||
|
||||
def test_3():
|
||||
print("\n这是第三个测试方法")
|
||||
|
||||
|
||||
#
|
||||
# def t_2():
|
||||
# print("这是第二个测试方法")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
pytest.main(["-s", "test_first.py"])
|
|
@ -0,0 +1,68 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-04-28 21:38
|
||||
# File: test_frame.py
|
||||
import pytest
|
||||
|
||||
|
||||
# 模块中的方法
|
||||
def setup_module():
|
||||
print("\nsetup_module:整个test_module.py模块只执行一次")
|
||||
|
||||
|
||||
def teardown_module():
|
||||
print("teardown_module:整个test_module.py模块只执行一次")
|
||||
|
||||
|
||||
def setup_function():
|
||||
print("setup_function:每个非类函数测试用例开始前都会执行")
|
||||
|
||||
|
||||
def teardown_function():
|
||||
print("teardown_function:每个非类函数测试用例结束后都会执行")
|
||||
|
||||
|
||||
# 测试模块中的用例1
|
||||
|
||||
|
||||
def test_one():
|
||||
print("正在执行测试模块----test_one")
|
||||
|
||||
|
||||
def test_one_1():
|
||||
print("正在执行测试模块----test_one_1")
|
||||
|
||||
|
||||
# 测试模块中的用例2
|
||||
def test_two():
|
||||
print("正在执行测试模块----test_two")
|
||||
|
||||
|
||||
# 测试类
|
||||
class TestCase(object):
|
||||
def setup_class(self):
|
||||
print("\nsetup_class:在类中所有测试用例执行之前")
|
||||
|
||||
def teardown_class(self):
|
||||
print("teardown_class:在类中所有测试用例执行之后")
|
||||
|
||||
def setup_method(self):
|
||||
print("setup_method: 每个类中测试方法用例开始前执行")
|
||||
|
||||
def teardown_method(self):
|
||||
print("teardown_method: 每个类中测试方法用例结束后执行")
|
||||
|
||||
def setup(self):
|
||||
print("setup:每个类中测试方法用例开始前都会执行")
|
||||
|
||||
def teardown(self):
|
||||
print("teardown:每个类中测试方法用例结束后都会执行")
|
||||
|
||||
def test_three(self):
|
||||
print("正在执行测试类----test_three")
|
||||
|
||||
def test_four(self):
|
||||
print("正在执行测试类----test_four")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
pytest.main(["-s", "test_frame.py"])
|
|
@ -0,0 +1,36 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-04-28 16:42
|
||||
# File: test_frame_1.py
|
||||
|
||||
import pytest
|
||||
|
||||
|
||||
# 模块中的方法
|
||||
def setup_module():
|
||||
print("\nsetup_module:整个test_module.py模块只执行一次")
|
||||
|
||||
|
||||
def teardown_module():
|
||||
print("teardown_module:整个test_module.py模块只执行一次")
|
||||
|
||||
|
||||
def setup_function():
|
||||
print("setup_function:每个用例开始前都会执行")
|
||||
|
||||
|
||||
def teardown_function():
|
||||
print("teardown_function:每个用例结束后都会执行")
|
||||
|
||||
|
||||
# 测试模块中的用例1
|
||||
def test_one():
|
||||
print("正在执行测试模块----test_one")
|
||||
|
||||
|
||||
# 测试模块中的用例2
|
||||
def test_two():
|
||||
print("正在执行测试模块----test_two")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
pytest.main(["-s", "test_frame_1.py"])
|
|
@ -0,0 +1,36 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-04-28 16:42
|
||||
# File: test_frame_1.py
|
||||
|
||||
import pytest
|
||||
|
||||
|
||||
# 测试类
|
||||
class TestCase(object):
|
||||
def setup_class(self):
|
||||
print("\nsetup_class:所有用例执行之前")
|
||||
|
||||
def teardown_class(self):
|
||||
print("teardown_class:所有用例执行之后")
|
||||
|
||||
def setup_method(self):
|
||||
print("setup_method: 每个用例开始前执行")
|
||||
|
||||
def teardown_method(self):
|
||||
print("teardown_method: 每个用例结束后执行")
|
||||
|
||||
def setup(self):
|
||||
print("setup:每个用例开始前都会执行")
|
||||
|
||||
def teardown(self):
|
||||
print("teardown:每个用例结束后都会执行")
|
||||
|
||||
def test_three(self):
|
||||
print("正在执行测试类----test_three")
|
||||
|
||||
def test_four(self):
|
||||
print("正在执行测试类----test_four")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
pytest.main(["-s", "test_frame_2.py"])
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
Pappium-youdao-demo
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
<component name="TestRunnerService">
|
||||
<option name="projectConfiguration" value="pytest" />
|
||||
<option name="PROJECT_TEST_RUNNER" value="pytest" />
|
||||
</component>
|
||||
</module>
|
|
@ -0,0 +1,52 @@
|
|||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<DBN-PSQL>
|
||||
<case-options enabled="true">
|
||||
<option name="KEYWORD_CASE" value="lower" />
|
||||
<option name="FUNCTION_CASE" value="lower" />
|
||||
<option name="PARAMETER_CASE" value="lower" />
|
||||
<option name="DATATYPE_CASE" value="lower" />
|
||||
<option name="OBJECT_CASE" value="preserve" />
|
||||
</case-options>
|
||||
<formatting-settings enabled="false" />
|
||||
</DBN-PSQL>
|
||||
<DBN-SQL>
|
||||
<case-options enabled="true">
|
||||
<option name="KEYWORD_CASE" value="lower" />
|
||||
<option name="FUNCTION_CASE" value="lower" />
|
||||
<option name="PARAMETER_CASE" value="lower" />
|
||||
<option name="DATATYPE_CASE" value="lower" />
|
||||
<option name="OBJECT_CASE" value="preserve" />
|
||||
</case-options>
|
||||
<formatting-settings enabled="false">
|
||||
<option name="STATEMENT_SPACING" value="one_line" />
|
||||
<option name="CLAUSE_CHOP_DOWN" value="chop_down_if_statement_long" />
|
||||
<option name="ITERATION_ELEMENTS_WRAPPING" value="chop_down_if_not_single" />
|
||||
</formatting-settings>
|
||||
</DBN-SQL>
|
||||
<DBN-PSQL>
|
||||
<case-options enabled="true">
|
||||
<option name="KEYWORD_CASE" value="lower" />
|
||||
<option name="FUNCTION_CASE" value="lower" />
|
||||
<option name="PARAMETER_CASE" value="lower" />
|
||||
<option name="DATATYPE_CASE" value="lower" />
|
||||
<option name="OBJECT_CASE" value="preserve" />
|
||||
</case-options>
|
||||
<formatting-settings enabled="false" />
|
||||
</DBN-PSQL>
|
||||
<DBN-SQL>
|
||||
<case-options enabled="true">
|
||||
<option name="KEYWORD_CASE" value="lower" />
|
||||
<option name="FUNCTION_CASE" value="lower" />
|
||||
<option name="PARAMETER_CASE" value="lower" />
|
||||
<option name="DATATYPE_CASE" value="lower" />
|
||||
<option name="OBJECT_CASE" value="preserve" />
|
||||
</case-options>
|
||||
<formatting-settings enabled="false">
|
||||
<option name="STATEMENT_SPACING" value="one_line" />
|
||||
<option name="CLAUSE_CHOP_DOWN" value="chop_down_if_statement_long" />
|
||||
<option name="ITERATION_ELEMENTS_WRAPPING" value="chop_down_if_not_single" />
|
||||
</formatting-settings>
|
||||
</DBN-SQL>
|
||||
</code_scheme>
|
||||
</component>
|
|
@ -0,0 +1,455 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DBNavigator.Project.DataEditorManager">
|
||||
<record-view-column-sorting-type value="BY_INDEX" />
|
||||
<value-preview-text-wrapping value="true" />
|
||||
<value-preview-pinned value="false" />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.DataExportManager">
|
||||
<export-instructions>
|
||||
<create-header value="true" />
|
||||
<quote-values-containing-separator value="true" />
|
||||
<quote-all-values value="false" />
|
||||
<value-separator value="" />
|
||||
<file-name value="" />
|
||||
<file-location value="" />
|
||||
<scope value="GLOBAL" />
|
||||
<destination value="FILE" />
|
||||
<format value="EXCEL" />
|
||||
<charset value="UTF-8" />
|
||||
</export-instructions>
|
||||
</component>
|
||||
<component name="DBNavigator.Project.DatabaseBrowserManager">
|
||||
<autoscroll-to-editor value="false" />
|
||||
<autoscroll-from-editor value="true" />
|
||||
<show-object-properties value="true" />
|
||||
<loaded-nodes />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.DatabaseFileManager">
|
||||
<open-files />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.EditorStateManager">
|
||||
<last-used-providers />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.MethodExecutionManager">
|
||||
<method-browser />
|
||||
<execution-history>
|
||||
<group-entries value="true" />
|
||||
<execution-inputs />
|
||||
</execution-history>
|
||||
<argument-values-cache />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.ObjectDependencyManager">
|
||||
<last-used-dependency-type value="INCOMING" />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.ObjectQuickFilterManager">
|
||||
<last-used-operator value="EQUAL" />
|
||||
<filters />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.ScriptExecutionManager" clear-outputs="true">
|
||||
<recently-used-interfaces />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.Settings">
|
||||
<connections />
|
||||
<browser-settings>
|
||||
<general>
|
||||
<display-mode value="TABBED" />
|
||||
<navigation-history-size value="100" />
|
||||
<show-object-details value="false" />
|
||||
</general>
|
||||
<filters>
|
||||
<object-type-filter>
|
||||
<object-type name="SCHEMA" enabled="true" />
|
||||
<object-type name="USER" enabled="true" />
|
||||
<object-type name="ROLE" enabled="true" />
|
||||
<object-type name="PRIVILEGE" enabled="true" />
|
||||
<object-type name="CHARSET" enabled="true" />
|
||||
<object-type name="TABLE" enabled="true" />
|
||||
<object-type name="VIEW" enabled="true" />
|
||||
<object-type name="MATERIALIZED_VIEW" enabled="true" />
|
||||
<object-type name="NESTED_TABLE" enabled="true" />
|
||||
<object-type name="COLUMN" enabled="true" />
|
||||
<object-type name="INDEX" enabled="true" />
|
||||
<object-type name="CONSTRAINT" enabled="true" />
|
||||
<object-type name="DATASET_TRIGGER" enabled="true" />
|
||||
<object-type name="DATABASE_TRIGGER" enabled="true" />
|
||||
<object-type name="SYNONYM" enabled="true" />
|
||||
<object-type name="SEQUENCE" enabled="true" />
|
||||
<object-type name="PROCEDURE" enabled="true" />
|
||||
<object-type name="FUNCTION" enabled="true" />
|
||||
<object-type name="PACKAGE" enabled="true" />
|
||||
<object-type name="TYPE" enabled="true" />
|
||||
<object-type name="TYPE_ATTRIBUTE" enabled="true" />
|
||||
<object-type name="ARGUMENT" enabled="true" />
|
||||
<object-type name="DIMENSION" enabled="true" />
|
||||
<object-type name="CLUSTER" enabled="true" />
|
||||
<object-type name="DBLINK" enabled="true" />
|
||||
</object-type-filter>
|
||||
</filters>
|
||||
<sorting>
|
||||
<object-type name="COLUMN" sorting-type="NAME" />
|
||||
<object-type name="FUNCTION" sorting-type="NAME" />
|
||||
<object-type name="PROCEDURE" sorting-type="NAME" />
|
||||
<object-type name="ARGUMENT" sorting-type="POSITION" />
|
||||
</sorting>
|
||||
<default-editors>
|
||||
<object-type name="VIEW" editor-type="SELECTION" />
|
||||
<object-type name="PACKAGE" editor-type="SELECTION" />
|
||||
<object-type name="TYPE" editor-type="SELECTION" />
|
||||
</default-editors>
|
||||
</browser-settings>
|
||||
<navigation-settings>
|
||||
<lookup-filters>
|
||||
<lookup-objects>
|
||||
<object-type name="SCHEMA" enabled="true" />
|
||||
<object-type name="USER" enabled="false" />
|
||||
<object-type name="ROLE" enabled="false" />
|
||||
<object-type name="PRIVILEGE" enabled="false" />
|
||||
<object-type name="CHARSET" enabled="false" />
|
||||
<object-type name="TABLE" enabled="true" />
|
||||
<object-type name="VIEW" enabled="true" />
|
||||
<object-type name="MATERIALIZED VIEW" enabled="true" />
|
||||
<object-type name="NESTED TABLE" enabled="false" />
|
||||
<object-type name="COLUMN" enabled="false" />
|
||||
<object-type name="INDEX" enabled="true" />
|
||||
<object-type name="CONSTRAINT" enabled="true" />
|
||||
<object-type name="DATASET TRIGGER" enabled="true" />
|
||||
<object-type name="DATABASE TRIGGER" enabled="true" />
|
||||
<object-type name="SYNONYM" enabled="false" />
|
||||
<object-type name="SEQUENCE" enabled="true" />
|
||||
<object-type name="PROCEDURE" enabled="true" />
|
||||
<object-type name="FUNCTION" enabled="true" />
|
||||
<object-type name="PACKAGE" enabled="true" />
|
||||
<object-type name="TYPE" enabled="true" />
|
||||
<object-type name="TYPE ATTRIBUTE" enabled="false" />
|
||||
<object-type name="ARGUMENT" enabled="false" />
|
||||
<object-type name="DIMENSION" enabled="false" />
|
||||
<object-type name="CLUSTER" enabled="false" />
|
||||
<object-type name="DBLINK" enabled="true" />
|
||||
</lookup-objects>
|
||||
<force-database-load value="false" />
|
||||
<prompt-connection-selection value="true" />
|
||||
<prompt-schema-selection value="true" />
|
||||
</lookup-filters>
|
||||
</navigation-settings>
|
||||
<dataset-grid-settings>
|
||||
<general>
|
||||
<enable-zooming value="true" />
|
||||
<enable-column-tooltip value="true" />
|
||||
</general>
|
||||
<sorting>
|
||||
<nulls-first value="true" />
|
||||
<max-sorting-columns value="4" />
|
||||
</sorting>
|
||||
<tracking-columns>
|
||||
<columnNames value="" />
|
||||
<visible value="true" />
|
||||
<editable value="false" />
|
||||
</tracking-columns>
|
||||
</dataset-grid-settings>
|
||||
<dataset-editor-settings>
|
||||
<text-editor-popup>
|
||||
<active value="false" />
|
||||
<active-if-empty value="false" />
|
||||
<data-length-threshold value="100" />
|
||||
<popup-delay value="1000" />
|
||||
</text-editor-popup>
|
||||
<values-actions-popup>
|
||||
<show-popup-button value="true" />
|
||||
<element-count-threshold value="1000" />
|
||||
<data-length-threshold value="250" />
|
||||
</values-actions-popup>
|
||||
<general>
|
||||
<fetch-block-size value="100" />
|
||||
<fetch-timeout value="30" />
|
||||
<trim-whitespaces value="true" />
|
||||
<convert-empty-strings-to-null value="true" />
|
||||
<select-content-on-cell-edit value="true" />
|
||||
<large-value-preview-active value="true" />
|
||||
</general>
|
||||
<filters>
|
||||
<prompt-filter-dialog value="true" />
|
||||
<default-filter-type value="BASIC" />
|
||||
</filters>
|
||||
<qualified-text-editor text-length-threshold="300">
|
||||
<content-types>
|
||||
<content-type name="Text" enabled="true" />
|
||||
<content-type name="Properties" enabled="true" />
|
||||
<content-type name="XML" enabled="true" />
|
||||
<content-type name="DTD" enabled="true" />
|
||||
<content-type name="HTML" enabled="true" />
|
||||
<content-type name="XHTML" enabled="true" />
|
||||
<content-type name="SQL" enabled="true" />
|
||||
<content-type name="PL/SQL" enabled="true" />
|
||||
<content-type name="JSON" enabled="true" />
|
||||
<content-type name="JSON5" enabled="true" />
|
||||
<content-type name="YAML" enabled="true" />
|
||||
<content-type name="Bash" enabled="true" />
|
||||
</content-types>
|
||||
</qualified-text-editor>
|
||||
<record-navigation>
|
||||
<navigation-target value="VIEWER" />
|
||||
</record-navigation>
|
||||
</dataset-editor-settings>
|
||||
<code-editor-settings>
|
||||
<general>
|
||||
<show-object-navigation-gutter value="false" />
|
||||
<show-spec-declaration-navigation-gutter value="true" />
|
||||
<enable-spellchecking value="true" />
|
||||
<enable-reference-spellchecking value="false" />
|
||||
</general>
|
||||
<confirmations>
|
||||
<save-changes value="false" />
|
||||
<revert-changes value="true" />
|
||||
</confirmations>
|
||||
</code-editor-settings>
|
||||
<code-completion-settings>
|
||||
<filters>
|
||||
<basic-filter>
|
||||
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="function" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
|
||||
<filter-element type="OBJECT" id="schema" selected="true" />
|
||||
<filter-element type="OBJECT" id="role" selected="true" />
|
||||
<filter-element type="OBJECT" id="user" selected="true" />
|
||||
<filter-element type="OBJECT" id="privilege" selected="true" />
|
||||
<user-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="false" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</user-schema>
|
||||
<public-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="false" />
|
||||
<filter-element type="OBJECT" id="view" selected="false" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="false" />
|
||||
<filter-element type="OBJECT" id="index" selected="false" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="false" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="false" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="false" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="false" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="false" />
|
||||
<filter-element type="OBJECT" id="function" selected="false" />
|
||||
<filter-element type="OBJECT" id="package" selected="false" />
|
||||
<filter-element type="OBJECT" id="type" selected="false" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="false" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="false" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="false" />
|
||||
</public-schema>
|
||||
<any-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</any-schema>
|
||||
</basic-filter>
|
||||
<extended-filter>
|
||||
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="function" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
|
||||
<filter-element type="OBJECT" id="schema" selected="true" />
|
||||
<filter-element type="OBJECT" id="user" selected="true" />
|
||||
<filter-element type="OBJECT" id="role" selected="true" />
|
||||
<filter-element type="OBJECT" id="privilege" selected="true" />
|
||||
<user-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</user-schema>
|
||||
<public-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</public-schema>
|
||||
<any-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</any-schema>
|
||||
</extended-filter>
|
||||
</filters>
|
||||
<sorting enabled="true">
|
||||
<sorting-element type="RESERVED_WORD" id="keyword" />
|
||||
<sorting-element type="RESERVED_WORD" id="datatype" />
|
||||
<sorting-element type="OBJECT" id="column" />
|
||||
<sorting-element type="OBJECT" id="table" />
|
||||
<sorting-element type="OBJECT" id="view" />
|
||||
<sorting-element type="OBJECT" id="materialized view" />
|
||||
<sorting-element type="OBJECT" id="index" />
|
||||
<sorting-element type="OBJECT" id="constraint" />
|
||||
<sorting-element type="OBJECT" id="trigger" />
|
||||
<sorting-element type="OBJECT" id="synonym" />
|
||||
<sorting-element type="OBJECT" id="sequence" />
|
||||
<sorting-element type="OBJECT" id="procedure" />
|
||||
<sorting-element type="OBJECT" id="function" />
|
||||
<sorting-element type="OBJECT" id="package" />
|
||||
<sorting-element type="OBJECT" id="type" />
|
||||
<sorting-element type="OBJECT" id="dimension" />
|
||||
<sorting-element type="OBJECT" id="cluster" />
|
||||
<sorting-element type="OBJECT" id="dblink" />
|
||||
<sorting-element type="OBJECT" id="schema" />
|
||||
<sorting-element type="OBJECT" id="role" />
|
||||
<sorting-element type="OBJECT" id="user" />
|
||||
<sorting-element type="RESERVED_WORD" id="function" />
|
||||
<sorting-element type="RESERVED_WORD" id="parameter" />
|
||||
</sorting>
|
||||
<format>
|
||||
<enforce-code-style-case value="true" />
|
||||
</format>
|
||||
</code-completion-settings>
|
||||
<execution-engine-settings>
|
||||
<statement-execution>
|
||||
<fetch-block-size value="100" />
|
||||
<execution-timeout value="20" />
|
||||
<debug-execution-timeout value="600" />
|
||||
<focus-result value="false" />
|
||||
<prompt-execution value="false" />
|
||||
</statement-execution>
|
||||
<script-execution>
|
||||
<command-line-interfaces />
|
||||
<execution-timeout value="300" />
|
||||
</script-execution>
|
||||
<method-execution>
|
||||
<execution-timeout value="30" />
|
||||
<debug-execution-timeout value="600" />
|
||||
<parameter-history-size value="10" />
|
||||
</method-execution>
|
||||
</execution-engine-settings>
|
||||
<operation-settings>
|
||||
<transactions>
|
||||
<uncommitted-changes>
|
||||
<on-project-close value="ASK" />
|
||||
<on-disconnect value="ASK" />
|
||||
<on-autocommit-toggle value="ASK" />
|
||||
</uncommitted-changes>
|
||||
<multiple-uncommitted-changes>
|
||||
<on-commit value="ASK" />
|
||||
<on-rollback value="ASK" />
|
||||
</multiple-uncommitted-changes>
|
||||
</transactions>
|
||||
<session-browser>
|
||||
<disconnect-session value="ASK" />
|
||||
<kill-session value="ASK" />
|
||||
<reload-on-filter-change value="false" />
|
||||
</session-browser>
|
||||
<compiler>
|
||||
<compile-type value="KEEP" />
|
||||
<compile-dependencies value="ASK" />
|
||||
<always-show-controls value="false" />
|
||||
</compiler>
|
||||
<debugger>
|
||||
<debugger-type value="JDBC" />
|
||||
<use-generic-runners value="true" />
|
||||
</debugger>
|
||||
</operation-settings>
|
||||
<ddl-file-settings>
|
||||
<extensions>
|
||||
<mapping file-type-id="VIEW" extensions="vw" />
|
||||
<mapping file-type-id="TRIGGER" extensions="trg" />
|
||||
<mapping file-type-id="PROCEDURE" extensions="prc" />
|
||||
<mapping file-type-id="FUNCTION" extensions="fnc" />
|
||||
<mapping file-type-id="PACKAGE" extensions="pkg" />
|
||||
<mapping file-type-id="PACKAGE_SPEC" extensions="pks" />
|
||||
<mapping file-type-id="PACKAGE_BODY" extensions="pkb" />
|
||||
<mapping file-type-id="TYPE" extensions="tpe" />
|
||||
<mapping file-type-id="TYPE_SPEC" extensions="tps" />
|
||||
<mapping file-type-id="TYPE_BODY" extensions="tpb" />
|
||||
</extensions>
|
||||
<general>
|
||||
<lookup-ddl-files value="true" />
|
||||
<create-ddl-files value="false" />
|
||||
<synchronize-ddl-files value="true" />
|
||||
<use-qualified-names value="false" />
|
||||
<make-scripts-rerunnable value="true" />
|
||||
</general>
|
||||
</ddl-file-settings>
|
||||
<general-settings>
|
||||
<regional-settings>
|
||||
<date-format value="MEDIUM" />
|
||||
<number-format value="UNGROUPED" />
|
||||
<locale value="SYSTEM_DEFAULT" />
|
||||
<use-custom-formats value="false" />
|
||||
</regional-settings>
|
||||
<environment>
|
||||
<environment-types>
|
||||
<environment-type id="development" name="Development" description="Development environment" color="-2430209/-12296320" readonly-code="false" readonly-data="false" />
|
||||
<environment-type id="integration" name="Integration" description="Integration environment" color="-2621494/-12163514" readonly-code="true" readonly-data="false" />
|
||||
<environment-type id="production" name="Production" description="Productive environment" color="-11574/-10271420" readonly-code="true" readonly-data="true" />
|
||||
<environment-type id="other" name="Other" description="" color="-1576/-10724543" readonly-code="false" readonly-data="false" />
|
||||
</environment-types>
|
||||
<visibility-settings>
|
||||
<connection-tabs value="true" />
|
||||
<dialog-headers value="true" />
|
||||
<object-editor-tabs value="true" />
|
||||
<script-editor-tabs value="false" />
|
||||
<execution-result-tabs value="true" />
|
||||
</visibility-settings>
|
||||
</environment>
|
||||
</general-settings>
|
||||
</component>
|
||||
<component name="DBNavigator.Project.StatementExecutionManager">
|
||||
<execution-variables />
|
||||
</component>
|
||||
</project>
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding" addBOMForNewFiles="with NO BOM" />
|
||||
</project>
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.6" project-jdk-type="Python SDK" />
|
||||
</project>
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/../Pappium-youdao-demo/.idea/Pappium-youdao-demo.iml" filepath="$PROJECT_DIR$/../Pappium-youdao-demo/.idea/Pappium-youdao-demo.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
|
||||
</component>
|
||||
</project>
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
title,text
|
||||
我的日记1,this is my first note.
|
||||
我的日记2, today is holiday.
|
|
|
@ -0,0 +1,3 @@
|
|||
- titlename
|
||||
- mydaily
|
||||
- 我的日记
|
|
@ -0,0 +1,3 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-08-13 11:13
|
||||
# File: __init__.py.py
|
|
@ -0,0 +1 @@
|
|||
base_url: http://127.0.0.1:4723/wd/hub
|
|
@ -0,0 +1,3 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-08-12 09:19
|
||||
# File: __init__.py.py
|
|
@ -0,0 +1,27 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-08-14 11:28
|
||||
# File: test_data_drvien.py
|
||||
import pytest
|
||||
|
||||
from utils.get_csvdata import get_csv_data
|
||||
from utils.get_path import PATH
|
||||
|
||||
datafile = PATH("../Testdatas/addnotedata.csv")
|
||||
data_test = get_csv_data(datafile)
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def data_addnote(*data_test):
|
||||
# print("这是",data_test)
|
||||
print(type(data_test))
|
||||
return data_test
|
||||
|
||||
|
||||
@pytest.mark.parametrize("title,text", data_addnote)
|
||||
def test_param(title, text):
|
||||
print(title, "----")
|
||||
print(text, "---")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
pytest.main()
|
|
@ -0,0 +1,41 @@
|
|||
from appium import webdriver
|
||||
|
||||
from utils import desired_caps
|
||||
|
||||
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps.get_desired_caps())
|
||||
# 进入时点的同意
|
||||
el1 = driver.find_element_by_id("btn_ok")
|
||||
# com.youdao.note:id/btn_ok
|
||||
el1.click()
|
||||
|
||||
# time.sleep(2)
|
||||
# driver.find_element_by_id("com.youdao.note:id/btn_ok").click()
|
||||
#
|
||||
# time.sleep(2)
|
||||
# # 权限允许
|
||||
# el2=driver.find_element_by_id("com.android.packageinstaller:id/permission_allow_button")
|
||||
# el2.click()
|
||||
# if el2 is not None:
|
||||
# el2.click()
|
||||
# time.sleep(3)
|
||||
# el3 = driver.find_element_by_id("com.youdao.note:id/add_note")
|
||||
# el3.click()
|
||||
# time.sleep(2)
|
||||
# el4 = driver.find_element_by_id("com.youdao.note:id/add_icon")
|
||||
# el4.click()
|
||||
# time.sleep(3)
|
||||
# # driver.back()
|
||||
# el5 = driver.find_element_by_id("com.youdao.note:id/note_title")
|
||||
# el5.send_keys("这是我的日志")
|
||||
# time.sleep(5)
|
||||
#
|
||||
# # driver.press_keycode(66)
|
||||
# # time.sleep(1)
|
||||
# driver.find_elements_by_xpath('//android.widget.LinearLayout[@resourceid="com.youdao.note:id/note_content"]')[1].send_keys('七点半签到')
|
||||
|
||||
# time.sleep(3)
|
||||
#
|
||||
# el9 = driver.find_element_by_id("com.youdao.note:id/actionbar_complete_text")
|
||||
# el9.click()
|
||||
#
|
||||
# driver.reset()
|
|
@ -0,0 +1,39 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-08-12 09:20
|
||||
# File: test_youdao_start.py
|
||||
'''
|
||||
1、连接手机(手机相关配置),启动手机app.
|
||||
2、使用webdriver简单定位进行操作
|
||||
|
||||
'''
|
||||
from utils.get_path import PATH
|
||||
|
||||
app_file = PATH("../Papp/ApiDemos-debug.apk")
|
||||
print(app_file)
|
||||
# desired_caps={
|
||||
# "platformName":"android",
|
||||
# # 在cmd使用adb devices返回的值写在下面
|
||||
# "deviceName":"emulator-5554",
|
||||
# # 这个是夜神的设备名
|
||||
# # "deviceName":"127.0.0.1:62001",
|
||||
# "platformVersion":"6.0",
|
||||
# # 你夜神的android版本
|
||||
# # "platformVersion":"5.1",
|
||||
# "automationName":"UiAutomator2",
|
||||
# # 值 是你app的地址
|
||||
# "app":app_file,
|
||||
#
|
||||
# }
|
||||
#
|
||||
#
|
||||
#
|
||||
# driver=webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_caps)
|
||||
|
||||
# el1 = driver.find_element_by_accessibility_id("Accessibility")
|
||||
# el1.get_attribute("context-desc")
|
||||
# el1.click()
|
||||
# el2 = driver.find_element_by_accessibility_id("Accessibility Node Querying")
|
||||
# el2.click()
|
||||
# el3 = driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.ListView/android.widget.LinearLayout[3]/android.widget.CheckBox")
|
||||
# el3.click()
|
||||
# driver.save_screenshot("1.png")
|
|
@ -0,0 +1,3 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-08-13 11:12
|
||||
# File: __init__.py.py
|
|
@ -0,0 +1,25 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-08-13 11:36
|
||||
# File: addnotepage.py
|
||||
from .basepage import BasePage
|
||||
from .locators import AddNotePageLoacators
|
||||
from .locators import FirstOpenPageLocators
|
||||
|
||||
|
||||
class FirstOpenPage(BasePage):
|
||||
# 继承的:BasePage是我的父类,父类中的所有方法我都能用。
|
||||
|
||||
def permission_allowandok(self):
|
||||
BasePage.click_thing(self, FirstOpenPageLocators.btn_ok)
|
||||
BasePage.click_thing(self, FirstOpenPageLocators.btn_ok)
|
||||
BasePage.click_thing(self, FirstOpenPageLocators.permission_allow)
|
||||
|
||||
|
||||
class AddNotePage(BasePage):
|
||||
def add_note_ok(self, title):
|
||||
BasePage.click_thing(self, AddNotePageLoacators.add_note)
|
||||
BasePage.click_thing(self, AddNotePageLoacators.add_icon)
|
||||
BasePage.set_value(self, AddNotePageLoacators.note_title, title)
|
||||
# self.driver.press_keycode(66)
|
||||
# BasePage.set_value(self, AddNotePageLoacators.note_editText, editText)
|
||||
BasePage.click_thing(self, AddNotePageLoacators.submit_complete)
|
|
@ -0,0 +1,68 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-08-13 11:27
|
||||
# File: basepage.py
|
||||
|
||||
import logging
|
||||
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
|
||||
log = logging.getLogger("linda's test")
|
||||
|
||||
|
||||
class BasePage(object):
|
||||
|
||||
def __init__(self, driver):
|
||||
# init
|
||||
# self
|
||||
# 设置driver的类型,所有方法在没有实例时才能点出来
|
||||
self.driver: WebDriver = driver
|
||||
log.info("这是个初始化驱动!")
|
||||
|
||||
def set_value(self, locator, value):
|
||||
|
||||
if (WebDriverWait(self.driver, 10).until(
|
||||
EC.presence_of_element_located(locator)
|
||||
)):
|
||||
# 参数传递,元组格式与非元组格式
|
||||
element = self.driver.find_element(*locator)
|
||||
element.click()
|
||||
element.clear()
|
||||
element.send_keys(value)
|
||||
else:
|
||||
log.error("无法输入信息,找不到元素")
|
||||
|
||||
def click_thing(self, locator):
|
||||
if (WebDriverWait(self.driver, 10).until(
|
||||
EC.presence_of_element_located(locator)
|
||||
)):
|
||||
element = self.driver.find_element(*locator)
|
||||
element.click()
|
||||
else:
|
||||
log.error("无法点击,找不到元素")
|
||||
|
||||
def save_pic(self, filepath):
|
||||
self.driver.get_screenshot_as_file(filepath)
|
||||
|
||||
def swipe_up(self, driver):
|
||||
# 兼容性-适合所有手机,获得屏幕大小--宽,高
|
||||
width = driver.get_window_size()['width']
|
||||
height = driver.get_window_size()['height']
|
||||
# swipe(x=起始点x坐标,y=起始点y的坐标,x1=滑动到的点的x坐标,y1=滑动到的点的y坐标)
|
||||
# 0,0的点是在屏幕左上角。
|
||||
self.driver.swipe(width / 2, height / 3 * 2, width / 2, height / 3 * 1)
|
||||
|
||||
def swipe_down(self, driver):
|
||||
width = driver.get_window_size()['width']
|
||||
height = driver.get_window_size()['height']
|
||||
self.driver.swipe(width / 2, height / 3, width / 2, height / 3 * 2)
|
||||
|
||||
def swipe_right(self, driver):
|
||||
width = driver.get_window_size()['width']
|
||||
height = driver.get_window_size()['height']
|
||||
self.driver.swipe(width / 10, height / 2, width / 10 * 9, height / 2)
|
||||
|
||||
def swipe_left(self, driver):
|
||||
width = driver.get_window_size()['width']
|
||||
height = driver.get_window_size()['height']
|
||||
self.driver.swipe(width / 10 * 9, height / 2, width / 10, height / 2)
|
|
@ -0,0 +1,21 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-08-13 11:23
|
||||
# File: locators.py
|
||||
|
||||
from appium.webdriver.common.mobileby import MobileBy
|
||||
|
||||
|
||||
class FirstOpenPageLocators(object):
|
||||
btn_ok = (MobileBy.ID, "com.youdao.note:id/btn_ok")
|
||||
permission_allow = (MobileBy.ID, "com.android.packageinstaller:id/permission_allow_button")
|
||||
|
||||
|
||||
class AddNotePageLoacators(object):
|
||||
add_note = (MobileBy.ID, "com.youdao.note:id/add_note")
|
||||
add_icon = (MobileBy.ID, "com.youdao.note:id/add_icon")
|
||||
note_title = (MobileBy.ID, "com.youdao.note:id/note_title")
|
||||
# note_editText = (MobileBy.XPATH, "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.ScrollView/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.EditText")
|
||||
# /hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.ScrollView/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.EditText
|
||||
# // android.widget.EditText
|
||||
note_editText = (MobileBy.XPATH, "//android.widget.EditText")
|
||||
submit_complete = (MobileBy.ID, "com.youdao.note:id/actionbar_complete_text")
|
|
@ -0,0 +1,9 @@
|
|||
[pytest]
|
||||
markers =
|
||||
regression
|
||||
sanity
|
||||
|
||||
log_cli = 1
|
||||
log_cli_level = INFO
|
||||
log_cli_format = %(asctime)s [%(levelname)8s] %(message)s (%(filename)s:%(lineno)s)
|
||||
log_cli_date_format = %Y-%m-%d %H:%M:%S
|
|
@ -0,0 +1,81 @@
|
|||
{
|
||||
"name": "test_addnote[titlename]",
|
||||
"status": "passed",
|
||||
"steps": [
|
||||
{
|
||||
"name": "初始化添加页面",
|
||||
"status": "passed",
|
||||
"start": 1605246234664,
|
||||
"stop": 1605246234664
|
||||
}
|
||||
],
|
||||
"attachments": [
|
||||
{
|
||||
"name": "log",
|
||||
"source": "2b791e82-6b09-43b9-a2b0-0eee6940d2be-attachment.txt",
|
||||
"type": "text/plain"
|
||||
}
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"name": "add",
|
||||
"value": "'titlename'"
|
||||
}
|
||||
],
|
||||
"start": 1605246234664,
|
||||
"stop": 1605246243327,
|
||||
"uuid": "e980355b-ef95-4b6b-aeb8-f6181bc9331e",
|
||||
"historyId": "08c83c542e7f539f428476244e3617e1",
|
||||
"testCaseId": "8db33a95bdc54014b9ea1036d3f6a2a7",
|
||||
"fullName": "testcases.test_add_note_pytest.TestNotePytest#test_addnote",
|
||||
"labels": [
|
||||
{
|
||||
"name": "feature",
|
||||
"value": "笔记功能"
|
||||
},
|
||||
{
|
||||
"name": "story",
|
||||
"value": "添加笔记功能"
|
||||
},
|
||||
{
|
||||
"name": "severity",
|
||||
"value": "critical"
|
||||
},
|
||||
{
|
||||
"name": "tag",
|
||||
"value": "regression"
|
||||
},
|
||||
{
|
||||
"name": "parentSuite",
|
||||
"value": "testcases"
|
||||
},
|
||||
{
|
||||
"name": "suite",
|
||||
"value": "test_add_note_pytest"
|
||||
},
|
||||
{
|
||||
"name": "subSuite",
|
||||
"value": "TestNotePytest"
|
||||
},
|
||||
{
|
||||
"name": "host",
|
||||
"value": "cpe-172-115-250-122.socal.res.rr.com"
|
||||
},
|
||||
{
|
||||
"name": "thread",
|
||||
"value": "7020-MainThread"
|
||||
},
|
||||
{
|
||||
"name": "framework",
|
||||
"value": "pytest"
|
||||
},
|
||||
{
|
||||
"name": "language",
|
||||
"value": "cpython3"
|
||||
},
|
||||
{
|
||||
"name": "package",
|
||||
"value": "testcases.test_add_note_pytest"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"uuid": "6af5198a-4b32-4ed1-a49a-328e93e6c547",
|
||||
"children": [
|
||||
"e980355b-ef95-4b6b-aeb8-f6181bc9331e",
|
||||
"932f4547-1f00-4527-a0ad-998e2cbe2673",
|
||||
"ce01012d-2140-458b-a97c-f77dc84502a5",
|
||||
"91aa413c-8e34-43d9-9953-5afb870b11dd"
|
||||
],
|
||||
"befores": [
|
||||
{
|
||||
"name": "base_url",
|
||||
"status": "passed",
|
||||
"start": 1605246224382,
|
||||
"stop": 1605246224382
|
||||
}
|
||||
],
|
||||
"start": 1605246224382,
|
||||
"stop": 1605246257547
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"uuid": "bd510ca4-b7dd-41fc-86b0-5efdb63d06e3",
|
||||
"children": [
|
||||
"e980355b-ef95-4b6b-aeb8-f6181bc9331e",
|
||||
"932f4547-1f00-4527-a0ad-998e2cbe2673",
|
||||
"ce01012d-2140-458b-a97c-f77dc84502a5",
|
||||
"91aa413c-8e34-43d9-9953-5afb870b11dd"
|
||||
],
|
||||
"befores": [
|
||||
{
|
||||
"name": "sensitive_url",
|
||||
"status": "passed",
|
||||
"start": 1605246232886,
|
||||
"stop": 1605246232886
|
||||
}
|
||||
],
|
||||
"start": 1605246232886,
|
||||
"stop": 1605246257545
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"uuid": "ab21421a-098d-44d6-93bb-eee0ca2d83a7",
|
||||
"children": [
|
||||
"e980355b-ef95-4b6b-aeb8-f6181bc9331e"
|
||||
],
|
||||
"befores": [
|
||||
{
|
||||
"name": "_skip_sensitive",
|
||||
"status": "passed",
|
||||
"start": 1605246234663,
|
||||
"stop": 1605246234663
|
||||
}
|
||||
],
|
||||
"start": 1605246234663,
|
||||
"stop": 1605246243328
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
[32mINFO [0m linda's test:basepage.py:22 这是个初始化驱动!
|
||||
[32mINFO [0m linda's test:basepage.py:22 这是个初始化驱动!
|
|
@ -0,0 +1,81 @@
|
|||
{
|
||||
"name": "test_addnote[我的日记]",
|
||||
"status": "passed",
|
||||
"steps": [
|
||||
{
|
||||
"name": "初始化添加页面",
|
||||
"status": "passed",
|
||||
"start": 1605246251075,
|
||||
"stop": 1605246251075
|
||||
}
|
||||
],
|
||||
"attachments": [
|
||||
{
|
||||
"name": "log",
|
||||
"source": "eeea85be-6a8d-4746-b9a8-d80b5ebfda0f-attachment.txt",
|
||||
"type": "text/plain"
|
||||
}
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"name": "add",
|
||||
"value": "'我的日记'"
|
||||
}
|
||||
],
|
||||
"start": 1605246251075,
|
||||
"stop": 1605246256942,
|
||||
"uuid": "ce01012d-2140-458b-a97c-f77dc84502a5",
|
||||
"historyId": "c3dadac8012ca3b0e11d3abb7b964158",
|
||||
"testCaseId": "8db33a95bdc54014b9ea1036d3f6a2a7",
|
||||
"fullName": "testcases.test_add_note_pytest.TestNotePytest#test_addnote",
|
||||
"labels": [
|
||||
{
|
||||
"name": "feature",
|
||||
"value": "笔记功能"
|
||||
},
|
||||
{
|
||||
"name": "story",
|
||||
"value": "添加笔记功能"
|
||||
},
|
||||
{
|
||||
"name": "severity",
|
||||
"value": "critical"
|
||||
},
|
||||
{
|
||||
"name": "tag",
|
||||
"value": "regression"
|
||||
},
|
||||
{
|
||||
"name": "parentSuite",
|
||||
"value": "testcases"
|
||||
},
|
||||
{
|
||||
"name": "suite",
|
||||
"value": "test_add_note_pytest"
|
||||
},
|
||||
{
|
||||
"name": "subSuite",
|
||||
"value": "TestNotePytest"
|
||||
},
|
||||
{
|
||||
"name": "host",
|
||||
"value": "cpe-172-115-250-122.socal.res.rr.com"
|
||||
},
|
||||
{
|
||||
"name": "thread",
|
||||
"value": "7020-MainThread"
|
||||
},
|
||||
{
|
||||
"name": "framework",
|
||||
"value": "pytest"
|
||||
},
|
||||
{
|
||||
"name": "language",
|
||||
"value": "cpython3"
|
||||
},
|
||||
{
|
||||
"name": "package",
|
||||
"value": "testcases.test_add_note_pytest"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,81 @@
|
|||
{
|
||||
"name": "test_addnote[mydaily]",
|
||||
"status": "passed",
|
||||
"steps": [
|
||||
{
|
||||
"name": "初始化添加页面",
|
||||
"status": "passed",
|
||||
"start": 1605246243331,
|
||||
"stop": 1605246243331
|
||||
}
|
||||
],
|
||||
"attachments": [
|
||||
{
|
||||
"name": "log",
|
||||
"source": "929d0d94-ab92-4aa4-bcb1-9a1109957415-attachment.txt",
|
||||
"type": "text/plain"
|
||||
}
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"name": "add",
|
||||
"value": "'mydaily'"
|
||||
}
|
||||
],
|
||||
"start": 1605246243331,
|
||||
"stop": 1605246251070,
|
||||
"uuid": "932f4547-1f00-4527-a0ad-998e2cbe2673",
|
||||
"historyId": "334b8cf0229187da0114e758a97ae5d6",
|
||||
"testCaseId": "8db33a95bdc54014b9ea1036d3f6a2a7",
|
||||
"fullName": "testcases.test_add_note_pytest.TestNotePytest#test_addnote",
|
||||
"labels": [
|
||||
{
|
||||
"name": "feature",
|
||||
"value": "笔记功能"
|
||||
},
|
||||
{
|
||||
"name": "story",
|
||||
"value": "添加笔记功能"
|
||||
},
|
||||
{
|
||||
"name": "severity",
|
||||
"value": "critical"
|
||||
},
|
||||
{
|
||||
"name": "tag",
|
||||
"value": "regression"
|
||||
},
|
||||
{
|
||||
"name": "parentSuite",
|
||||
"value": "testcases"
|
||||
},
|
||||
{
|
||||
"name": "suite",
|
||||
"value": "test_add_note_pytest"
|
||||
},
|
||||
{
|
||||
"name": "subSuite",
|
||||
"value": "TestNotePytest"
|
||||
},
|
||||
{
|
||||
"name": "host",
|
||||
"value": "cpe-172-115-250-122.socal.res.rr.com"
|
||||
},
|
||||
{
|
||||
"name": "thread",
|
||||
"value": "7020-MainThread"
|
||||
},
|
||||
{
|
||||
"name": "framework",
|
||||
"value": "pytest"
|
||||
},
|
||||
{
|
||||
"name": "language",
|
||||
"value": "cpython3"
|
||||
},
|
||||
{
|
||||
"name": "package",
|
||||
"value": "testcases.test_add_note_pytest"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"uuid": "c9f3b0b4-2ec7-4afc-a304-6e857432dc38",
|
||||
"befores": [
|
||||
{
|
||||
"name": "add",
|
||||
"status": "passed",
|
||||
"start": 1605246243331,
|
||||
"stop": 1605246243331
|
||||
}
|
||||
],
|
||||
"start": 1605246243331,
|
||||
"stop": 1605246251071
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"uuid": "ff8441f3-8417-48e9-b01c-c384b71c8700",
|
||||
"children": [
|
||||
"932f4547-1f00-4527-a0ad-998e2cbe2673"
|
||||
],
|
||||
"befores": [
|
||||
{
|
||||
"name": "_skip_sensitive",
|
||||
"status": "passed",
|
||||
"start": 1605246243330,
|
||||
"stop": 1605246243331
|
||||
}
|
||||
],
|
||||
"start": 1605246243330,
|
||||
"stop": 1605246251071
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
[32mINFO [0m linda's test:basepage.py:22 这是个初始化驱动!
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"uuid": "c46fc8fd-34b6-45d3-8870-848aa6b8dbbc",
|
||||
"children": [
|
||||
"e980355b-ef95-4b6b-aeb8-f6181bc9331e",
|
||||
"932f4547-1f00-4527-a0ad-998e2cbe2673",
|
||||
"ce01012d-2140-458b-a97c-f77dc84502a5",
|
||||
"91aa413c-8e34-43d9-9953-5afb870b11dd"
|
||||
],
|
||||
"befores": [
|
||||
{
|
||||
"name": "run_app",
|
||||
"status": "passed",
|
||||
"start": 1605246224383,
|
||||
"stop": 1605246232885
|
||||
}
|
||||
],
|
||||
"afters": [
|
||||
{
|
||||
"name": "run_app::close_app",
|
||||
"status": "passed",
|
||||
"start": 1605246256948,
|
||||
"stop": 1605246257544
|
||||
}
|
||||
],
|
||||
"start": 1605246224383,
|
||||
"stop": 1605246257544
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
{
|
||||
"name": "test_deletenote",
|
||||
"status": "passed",
|
||||
"start": 1605246256946,
|
||||
"stop": 1605246256946,
|
||||
"uuid": "91aa413c-8e34-43d9-9953-5afb870b11dd",
|
||||
"historyId": "e314ff1939927dfbdf68c324dbe84599",
|
||||
"testCaseId": "e22a501644a708de344509cdcb40311a",
|
||||
"fullName": "testcases.test_add_note_pytest.TestNotePytest#test_deletenote",
|
||||
"labels": [
|
||||
{
|
||||
"name": "feature",
|
||||
"value": "笔记功能"
|
||||
},
|
||||
{
|
||||
"name": "tag",
|
||||
"value": "sanity"
|
||||
},
|
||||
{
|
||||
"name": "parentSuite",
|
||||
"value": "testcases"
|
||||
},
|
||||
{
|
||||
"name": "suite",
|
||||
"value": "test_add_note_pytest"
|
||||
},
|
||||
{
|
||||
"name": "subSuite",
|
||||
"value": "TestNotePytest"
|
||||
},
|
||||
{
|
||||
"name": "host",
|
||||
"value": "cpe-172-115-250-122.socal.res.rr.com"
|
||||
},
|
||||
{
|
||||
"name": "thread",
|
||||
"value": "7020-MainThread"
|
||||
},
|
||||
{
|
||||
"name": "framework",
|
||||
"value": "pytest"
|
||||
},
|
||||
{
|
||||
"name": "language",
|
||||
"value": "cpython3"
|
||||
},
|
||||
{
|
||||
"name": "package",
|
||||
"value": "testcases.test_add_note_pytest"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"uuid": "4ed3e9e2-2391-45c6-8aba-9bdade7d6019",
|
||||
"befores": [
|
||||
{
|
||||
"name": "add",
|
||||
"status": "passed",
|
||||
"start": 1605246234663,
|
||||
"stop": 1605246234663
|
||||
}
|
||||
],
|
||||
"start": 1605246234663,
|
||||
"stop": 1605246243327
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"uuid": "4b5061e6-a718-44a1-bcd2-6f9b7bb52f5e",
|
||||
"children": [
|
||||
"e980355b-ef95-4b6b-aeb8-f6181bc9331e",
|
||||
"932f4547-1f00-4527-a0ad-998e2cbe2673",
|
||||
"ce01012d-2140-458b-a97c-f77dc84502a5",
|
||||
"91aa413c-8e34-43d9-9953-5afb870b11dd"
|
||||
],
|
||||
"befores": [
|
||||
{
|
||||
"name": "agree_init",
|
||||
"status": "passed",
|
||||
"start": 1605246232886,
|
||||
"stop": 1605246234663
|
||||
}
|
||||
],
|
||||
"start": 1605246232886,
|
||||
"stop": 1605246256947
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"uuid": "e77dd35f-5fd5-4521-b0ab-a4fd5e6ec090",
|
||||
"children": [
|
||||
"91aa413c-8e34-43d9-9953-5afb870b11dd"
|
||||
],
|
||||
"befores": [
|
||||
{
|
||||
"name": "_skip_sensitive",
|
||||
"status": "passed",
|
||||
"start": 1605246256946,
|
||||
"stop": 1605246256946
|
||||
}
|
||||
],
|
||||
"start": 1605246256945,
|
||||
"stop": 1605246256946
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"uuid": "7dce7389-7b0e-4d16-a373-c01cd539b2ea",
|
||||
"children": [
|
||||
"e980355b-ef95-4b6b-aeb8-f6181bc9331e",
|
||||
"932f4547-1f00-4527-a0ad-998e2cbe2673",
|
||||
"ce01012d-2140-458b-a97c-f77dc84502a5",
|
||||
"91aa413c-8e34-43d9-9953-5afb870b11dd"
|
||||
],
|
||||
"befores": [
|
||||
{
|
||||
"name": "_verify_url",
|
||||
"status": "passed",
|
||||
"start": 1605246224383,
|
||||
"stop": 1605246224383
|
||||
}
|
||||
],
|
||||
"start": 1605246224383,
|
||||
"stop": 1605246257546
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
[32mINFO [0m linda's test:basepage.py:22 这是个初始化驱动!
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"uuid": "405f9e2d-01f6-4302-aafd-ab6eb4dfb000",
|
||||
"befores": [
|
||||
{
|
||||
"name": "add",
|
||||
"status": "passed",
|
||||
"start": 1605246251074,
|
||||
"stop": 1605246251074
|
||||
}
|
||||
],
|
||||
"start": 1605246251074,
|
||||
"stop": 1605246256942
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"uuid": "30fc52eb-81b3-4005-9ce8-7dbcbe894eca",
|
||||
"children": [
|
||||
"ce01012d-2140-458b-a97c-f77dc84502a5"
|
||||
],
|
||||
"befores": [
|
||||
{
|
||||
"name": "_skip_sensitive",
|
||||
"status": "passed",
|
||||
"start": 1605246251074,
|
||||
"stop": 1605246251074
|
||||
}
|
||||
],
|
||||
"start": 1605246251074,
|
||||
"stop": 1605246256943
|
||||
}
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-08-13 11:12
|
||||
# File: __init__.py.py
|
|
@ -0,0 +1,22 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-08-14 08:57
|
||||
# File: conftest.py
|
||||
import pytest
|
||||
from appium import webdriver
|
||||
|
||||
from utils import desired_caps
|
||||
# 在哪个包下,这个包下所有文件共享的数据写在这里
|
||||
from utils.get_path import PATH
|
||||
from utils.get_yaml import get_yaml_data
|
||||
|
||||
|
||||
@pytest.fixture(scope='session')
|
||||
def run_app(request):
|
||||
desired_cap_value = desired_caps.get_desired_caps()
|
||||
driver = webdriver.Remote(get_yaml_data(PATH("../config/conf.yaml"))['base_url'], desired_cap_value)
|
||||
|
||||
def close_app():
|
||||
driver.quit()
|
||||
|
||||
request.addfinalizer(close_app)
|
||||
return driver
|
|
@ -0,0 +1,62 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-08-13 11:55
|
||||
# File: test_add_note.py
|
||||
|
||||
import unittest
|
||||
from datetime import datetime
|
||||
|
||||
from appium import webdriver
|
||||
from ddt import ddt, data
|
||||
|
||||
from pageobject import addnotepage
|
||||
from utils import desired_caps
|
||||
from utils.get_csvdata import get_csv_data
|
||||
from utils.get_path import PATH
|
||||
|
||||
|
||||
@ddt
|
||||
class TestNote(unittest.TestCase):
|
||||
datafile = PATH("../Testdatas/addnotedata.csv")
|
||||
print(datafile)
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
desired_cap_value = desired_caps.get_desired_caps()
|
||||
cls.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_cap_value)
|
||||
# 先初始化页面,
|
||||
ok = addnotepage.FirstOpenPage(cls.driver)
|
||||
# 操作的方法
|
||||
ok.permission_allowandok()
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
# 关闭app
|
||||
cls.driver.quit()
|
||||
|
||||
# def test_addNote_nodate(self):
|
||||
# # 初始化添加笔记页面
|
||||
# add_note=addnotepage.AddNotePage(self.driver)
|
||||
# add_note.save_pic("/Users/lindafang/PycharmProjects/Pappium-youdao-demo/shotpicture/"+str(datetime.now()) + "addnote.png")
|
||||
# add_note.add_note_ok("这是笔记的标题","我今天很开心,跟大家共同渡过!")
|
||||
|
||||
@data(*get_csv_data(datafile))
|
||||
def test_addNote(self, value):
|
||||
daily_title = value[0]
|
||||
daily_text = value[1]
|
||||
# 先初始化添加日记的页面
|
||||
addnote = addnotepage.AddNotePage(self.driver)
|
||||
addnote.add_note_ok(daily_title, daily_text)
|
||||
addnote.save_pic(PATH("../shotpicture/" + str(datetime.now())) + "addnote.png")
|
||||
# 这里少断言,先在页面找到要断言的元素,在locator中加入元素。
|
||||
# 在封装的方法中加入属性值 的获取,在这里加断言
|
||||
assert 1
|
||||
|
||||
def test_edit_note(self):
|
||||
pass
|
||||
|
||||
def test_delete_note(self):
|
||||
pass
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
|
@ -0,0 +1,47 @@
|
|||
# Author: lindafang
|
||||
# Date: 2020-08-14 08:55
|
||||
# File: test_add_note_pytest.py
|
||||
from datetime import datetime
|
||||
|
||||
import allure
|
||||
import pytest
|
||||
import yaml
|
||||
|
||||
from pageobject import addnotepage
|
||||
from utils.get_path import PATH
|
||||
|
||||
|
||||
@allure.feature("笔记功能")
|
||||
class TestNotePytest(object):
|
||||
@allure.step("初始化,打开手机,同意权限")
|
||||
@pytest.fixture(scope='module', autouse=True)
|
||||
def agree_init(self, run_app):
|
||||
# 初始化driver,文件级通用
|
||||
# 先初始化页面,
|
||||
ok = addnotepage.FirstOpenPage(run_app)
|
||||
# 操作的方法
|
||||
ok.permission_allowandok()
|
||||
|
||||
@allure.story("添加笔记功能")
|
||||
@pytest.mark.regression
|
||||
@allure.severity("critical")
|
||||
@pytest.mark.parametrize("add",
|
||||
yaml.safe_load(open(PATH("../Testdatas/" + "addnotedata.yaml"), 'r', encoding='utf8')))
|
||||
def test_addnote(self, add, run_app):
|
||||
note_title = add
|
||||
# 初始化添加笔记页
|
||||
with allure.step("初始化添加页面"):
|
||||
addnote = addnotepage.AddNotePage(run_app)
|
||||
# # 添加标题和内容
|
||||
addnote.add_note_ok(note_title)
|
||||
# # 截图
|
||||
addnote.save_pic(PATH("../shotpicture/" + str(datetime.now())) + "addnote.png")
|
||||
|
||||
@pytest.mark.sanity
|
||||
# @pytest.mark.skip
|
||||
def test_deletenote(self):
|
||||
pass
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
pytest.main()
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue