Technology sharing

Automation (secundo gradu)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Technology acervus usus est ad interface automation Java

BIBLIOTHECA technica summaria:
①Java basics (encapsulation, reflexio, generica, jdbc)
Configuration file analysis (proprietates)
③httpclient (mitte http petitionem)
Fastjson et jsonpath processus data
Key puncta testng automated probatio compage
allure test fama

Prima categoria: http petitio affinis (fastjson, jsonpath, httpclient)

para

Create maven project

Create maven project primum, newPROJECT-Maven-groupid ---- metam

Insert imaginem descriptionis hic
Insert imaginem descriptionis hic

Reprehendo maven configuratione iterum

File-occasus-maven
Insert imaginem descriptionis hic

Fastjson et jsonpath ambo usi sunt ad processum data.
Focus tentationis compage automation.
test fama allicere

1. fastjson (applicationem missionis: parsing json chordarum et chordarum vestit parametri input)

fastjson processuum json chordarum et json vestit
Parse json chorda input parametri et para petitionibus subsequentibus

Dependence

<!-https://mvnrepository.com/artifact/com.alibaba/fastjson -->
com.alibaba
fastison
1.2.75

Adde clientelas et clientelas sponte generatae

Insert imaginem descriptionis hic
Post demptionem, videre potes fasciculos dependentiae automatice generatas.

1.1.

1.1.1

Exempli gratia: logging in username et password postulat.
{"usoris", "qzcsbj", "password": "123456"}

Automationis compages datae fons, initus parametri sunt omnes chordae json, fastjson adhibendae sunt

Gradus I: crea sarcina nomen, genus nomen, et principalis modum crea

Insert imaginem descriptionis hic

Gradus 2: Definire chordam variabilem, hic est chorda json quae indiget parsed
Gradus 3: Pro processu chordae json, primum parse eam in objectum jsonObjectum, et deinde in Tabula pone.
1)Primum creare HashMap, clavis et valorem utrumque chorda

Insert imaginem descriptionis hic
Insert imaginem descriptionis hic

2) Parse chordae.

Class.Method, haec methodus static

3) Ut claves obtineas, methodum directe utere jsonObjetc.keySet, id est, Pone collectionem obtinere

Quisque clavem in collectione est String

4) Iterum transi, valorem per clavem emensam obtine et postea clavem et valorem pone in Tabula

Insert imaginem descriptionis hic

Filum json definitum nunc parsed et in tabula geographica positum est
Insert imaginem descriptionis hic

5) Cognoscere contentum in Tabula positum et clavem in Tabula obtinere

Instructiones ut contenta chordae json in map
blog.csdnimg.cn/direct/ae6feeba2eae442f961df977a6c8eac1.jpeg)

1.1.2.

Artus automationis compagem initializationem implicat, et quaedam operationes quae intus in notitia requirunt.Ad database operandum, debes scribere sql
Hic est json ordinatus.

[{"sqlNo":"1", "sq!":" eligere * ab utentibus ubi username='qzcsbj';,"},. "sqlNo":"2", "sql":" eligere * ab utentibus quibus nomen usoris ='test0001'}]

Gradus I: crea sarcina nomen, genus nomen, et principalis modum crea
Gradus 2: Definire chordam variabilem, hic est ordo chordae json qui indiget parsed
Modus 1 (non expedit): Parse chordae JSONObjetct.parseArray (String text), valor reditus JSONArray est
1) Parse chordae, JSONObjetct.parseArray adhibetur hic

Insert imaginem descriptionis hic

2) Directa traversal, unumquodque elementum objectum typus est, et impressa sunt etiam duo json ingenia.

Insert imaginem descriptionis hic

3) Imprimendi sql valorem in chorda json. Nullae sunt rationes seu methodos hic.

Insert imaginem descriptionis hic
Hoc modum non expedit

Methodus 2: JSONObjetct.parseArray (String text, Classis clazz), valor reditus index &lt;T&gt;, genus reditus est List, et reditus elementum est HashMap

Duos parametri transeamus, primus parameter est chorda dividenda, secundus parameter est fasciculus bytecode.
Solutio est: Parse primi parametri Stringe in Tabula

1) Encapsulate singula elementa in objecto hashmap.
II) Get sqlNo, HashMap genus est sql, modum uti potes

Insert imaginem descriptionis hic

3) Nulla key valorem vel genus hic obtinet. Default est Object. Quod hic volumus est String, quod huc convertere cogatur.
4) Id est, valor singulis clavibus in chorda json in sql respondens obtinetur.

Insert imaginem descriptionis hic

5) Methodus haec insufficiens est: claves in filo json hic proponendae sunt. Si plures sunt, molestum erit.
 String sqlNo = (String)sql.get("sqlNo");
  • 1
Modus 3: Solvit defectum in methodo 2, plerumque utendo encapsulation

Contentum in unaquaque chorda json in objecto l encapsulare, ac methodos entitatis classi addere, et objectum directe. acquirere materiam sql. Automatio etiam haec encapsulationis indicio est. Id est encapsulare sql in rem;
Encapsulate proprietates ut privatas (sqlNo, sql), methodos acquirendi et ponendi, construendi methodos parameterizandi, ac methodi constructionis parametris addendi sunt, et reflexio methodos constructionis parameterless componet. Si parametros cum parametris tantum scribis nec parametros-liberos conditores scribere, error certus indicabitur supra entem genus scriptum est.

Optimize illud
Si elementum in obiecto encapsulatum est, mutatur ad genus a te ipso scriptum
Id est sql.class

1) Definire a sql javabean: genus sql attribuit sqlNo, sql, et adde modos positis, construendi modos et methodos adstringendi.

Insert imaginem descriptionis hicInsert imaginem descriptionis hic

2) Encapsulate quodlibet chorda json in objectum sql (Test02), JSONObjetct.parseArray (String text, Class clazz), reditus pretii est List &lt;T&gt;, reditus genus est List, et reditus elementum est obiectum sql.

Secundus modus supra est encapsulare singula in objecto hashMap, et hic encapsulare elementum unumquodque in SQL obiectum.
Insert imaginem descriptionis hic

III) Traverse

Adipisci attributa ab obiecto directe utendi modum

Insert imaginem descriptionis hic
Haec methodus commodior est ac plures claves obtinere non debet.

pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>mavenProject</groupId>
    <artifactId>mavenProject</artifactId>
    <version>1.0-SNAPSHOT</version>


    <dependencies>


        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.75</version>
        </dependency>

    </dependencies>

</project>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

sql classis

package com.zhou.demo;

public class Sql {
    private String sql;
    private String sqlNo;

    public Sql() {
    }

    public Sql(String sql) {
        this.sql = sql;
    }


    public Sql(String sql, String sqlNo) {
        this.sql = sql;
        this.sqlNo = sqlNo;
    }

    public void setSql(String sql) {
        this.sql = sql;
    }

    public void setSqlNo(String sqlNo) {
        this.sqlNo = sqlNo;
    }

    public String getSql() {
        return sql;
    }

    public String getSqlNo() {
        return sqlNo;
    }

    @Override
    public String toString() {
        return "sql{" +
                "sql='" + sql + ''' +
                ", sqlNo='" + sqlNo + ''' +
                '}';
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
package com.zhou.demo;

import com.alibaba.fastjson.JSONObject;

import java.util.HashMap;
import java.util.Set;
//需求:将json字符串转化成map,字符串:{"username":"qzcsbj", "password":"123456"}

public class Test {
    public static void main(String[] args) {
        String parameters="{"username":"qzcsbj", "password":"123456"}";
        //先解析为JSONObject,然后转换为map
        HashMap<String, String> map = new HashMap<String, String>();

        // 解析json格式字符串为JSONObject(JSONObject是Map接口的一个实现类,和HashMap平级)

        JSONObject jsonObject = JSONObject.parseObject(parameters);
        // 将JSO\\\ NObject转换为map,先获取keys,先将keyset获取,集合里的每一个key都是String,通过遍历的key获取value,再放到map中
        Set<String> keys= jsonObject.keySet();
        for (String key:keys) {
            map.put(key,jsonObject.getString(key));

        }

        //验证,获取Map中的key
        Set<String> keys2 = map.keySet();
        for (String key :keys2) {
            System.out.println(key+"="+map.get(key));
        }

    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
package com.zhou.demo;

import com.alibaba.fastjson.JSONObject;

import java.util.HashMap;
import java.util.List;


//JSON数组,每个元素是json字符串
public class Test02 {

    public static void main(String[] args) {
        String initsql="[n" + "{"sqlNo":"1","sql":"select * from  users where  username='qzcsbj';"},n" +
                "{"sqlNo":"2","sql":"select * from  users where  username='tester00501';"}n" + "n" + "]";
  /*   //元素解析为Map
        List<HashMap> sqls = JSONObject.parseArray(initsql,HashMap.class);
        for (HashMap sql:sqls) {
            System.out.println(sql);
            String sqlNo = (String)sql.get("sqlNo");
            String sql_ = (String)sql.get("sql");
            System.out.println("sqlNo-"+sqlNo+",sql_-"+sql_);
        }*/



  //元素封装到对象
        List<Sql> sqls = JSONObject.parseArray(initsql, Sql.class);

        for (Sql sql:sqls) {
            String sqlNo = sql.getSqlNo();
            String sql_ = sql.getSql();
            System.out.println("sqlNo-"+",sql_"+sql_);

        }

    }


    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

2. jsonpath (applicatio missionis: parsing data responsionis json, ut assertio agrorum obtinenda, sicut valorem adiunctum obtinendum);

Quia nunc, ante et retro fines separatur.
Backend plerumque redit json chordis
Si adfirmare vis, parse json solet.
Assertiones sunt plerumque codice + key negotium agri
Filum json est, sic uti debes jsonpath

Dependence

Adde clientelas et clientelas sponte generatae

blog.csdnimg.cn/5bdd9defd7db47b7a5934f79f9fd0ceb.png)
Insert imaginem descriptionis hic
Confirmare oportet an clientelae receptae sunt

2.1.

2.1.1
Gradus 1: Nomen genus crea, methodum principalem crea, et chordam variabilem defini

Haec variabilis hic responsio est campus postquam feliciter login rediit.
blog.csdnimg.cn/a20e89ee243c43f69a1b4e1c3a97b89b.png)

Gradus 2: Ad assertiones, contentum intus obtinere debes.

Insert imaginem descriptionis hic
Transi in definito agro responsio

Gradus III: Utere methodo JsonPath.read (json Objectum, String jsonpath, praedicatum... Filtra), genus reditus genus est Objectum

Insert imaginem descriptionis hic

Interface automation in processus dependens notitia
A fronte huius versus sume signum, quod et $.
Obtenta, si variabilis globalis est, in variabili globali servari potest.
Si vis accipere assertionem et inde pervenit
Fac aliam assertionem

3. httpclient (precationes mittere in codice scripto)

In compage automation, petitiones a codice scripto missae sunt, quo modo debes uti httpclient, bibliothecam a Java comparatam ut cum servo penitus correspondeat.

Dependence

Adde clientelas et clientelas sponte generatae

Insert imaginem descriptionis hic

3.1.

3.1.1
Praeparatio operis: Cognoscere num petitio instrumenti interfaciei interfaciendi documentum praeterierit.

Oportet transire id
Insert imaginem descriptionis hic
Ex bibliotheca videre possumus idis esse 259 .
Insert imaginem descriptionis hic
Insert imaginem descriptionis hic
Insert imaginem descriptionis hic

Gradus I: crea in nomine Test04 genus et principalis modum creare
Gradus 2: Definire inscriptione variabilis domicilii interfaciei et parametri rogationis

Insert imaginem descriptionis hic
In tabella notitia, parametri omnes in chordas json concatenatae sunt, ergo id=599 etiam in chordis json concatenatur.

Hic, 259 in duplici virgulis pone, ut sponte careat.
Insert imaginem descriptionis hic

Gradus 3: Parse chorda json, uti JSONObject.parseObject() methodus, genus reditus genus est JSONObject

Insert imaginem descriptionis hic

Gradus IV: Definire modum stabili getRequest (String URL, JSONObject jsonobject)

Insert imaginem descriptionis hic

Gradus 5: Tunc voca getRquest in methodo principali.

Insert imaginem descriptionis hic

Gradus Sex: Amplio getRequest () methodum logicam

peto: http://47.108.153.47:18089/qzcsbj/user/findById?id=259
?Directe splice parametri postea
Plures etiam valores considerandi sunt: ​​http://47.108.153.47:18089/qzcsbj/user/findById?id=259&name=jack

1) Accipe clavem per jsonobetct.keySet() et pone collectionem

Insert imaginem descriptionis hic

II) Pone collectio et clavis valorem atque percurre

Insert imaginem descriptionis hic

3) Etiam plurium valorum casus considerare debes, id est, vexillum verum definire, primum verum scribere et primus esse.

Insert imaginem descriptionis hic

4) Aliter scribe sequentia

Insert imaginem descriptionis hic

V) Definire filum res inanis et res reditus

Insert imaginem descriptionis hic
Supra modum URL concatenet ac parametri ad petitionem mittendi.

VI) crea petitionem httpget obiectum, novum HttpGet (org.apache.http.client.methods) hoc eligere conditor

Transire url in
Hic habes httpget petitionem objecti
Insert imaginem descriptionis hic

VII) httpclient crea clientem, utens HttpClients.createDefault () ratio, reditus genus est CloseableHttpClient

Insert imaginem descriptionis hic

Classis abstracta CloseableHttpClient instrumentum ad HttpClient, interface Closeable
Insert imaginem descriptionis hic
Polymorphismus adhiberi potest, et genus obiecti demonstrat ad genus parentis referendum (interfacies a genere parentis effectam)
Insert imaginem descriptionis hic

8) Facere petitionem, modum () modum, rem httpget transi, et exceptionem mitte

Insert imaginem descriptionis hic
Insert imaginem descriptionis hic

9) Obiecto HttpResponsionis obiecto, methodum getEntity vocare potes ut obiectum responsionis Httpentity obtineat.

Insert imaginem descriptionis hic
Insert imaginem descriptionis hic
Eventus res superius definitur
Nunc
Insert imaginem descriptionis hic

10) Curre

Insert imaginem descriptionis hic

3.1.2.
Praeparatio operis: Cognoscere num petitio instrumenti interfaciei swaggeris documentum praeterierit

Insert imaginem descriptionis hic
Insert imaginem descriptionis hic

Insert imaginem descriptionis hic

Gradus I: crea in nomine Test05 genus et principalis modum creare

http://47.108.153.47:18089/qzcsbj/user/login
url, roga ambitum parametri, peto capitis

Insert imaginem descriptionis hic

Gradus 2: Definire inscriptione variabilis URL interfaciendi, parametri petendi parametri, petendi capitis

Hi parametri e lima notitiarum in compage automationis obtinentur.
Insert imaginem descriptionis hic
Insert imaginem descriptionis hic

Gradus 3: Parse chordae json para et capitis utens methodo JSONObject.parseObject() valor reditus est generis JSONObjecti.
Gradus 4: Definire methodum postulationum mittendi, logicam meliorem, caput, domicilium, parametris transire.

Define res
reditus res

Insert imaginem descriptionis hic

1) Accipe clavem per jsonobetct.keySet (), pone collectionem, percurre clavem ut clavem obtineas

Insert imaginem descriptionis hic

2) Si vis addHeader appellare methodum per httppost obiectum, et genus reditus est HttPost, necesse est primum obiectum httpppost creare.

Transi url
Insert imaginem descriptionis hic

III) voca addHeader () modum per httppost object

Insert imaginem descriptionis hic

4) httpEntitas requiritur, sed httpEntitas interfacies est. Instrumentum non potest instantiare obiecta.

Insert imaginem descriptionis hic
Insert imaginem descriptionis hic
Si conditorem spectes, Filum transire et conditorem alterum exprimere potes.

Insert imaginem descriptionis hic
Insert imaginem descriptionis hic
Postulatio suprascripta est missa: petitio capitis et notitia mittenda sunt omnia definita.

V) httpclient crea clientem, utens HttpClients.createDefault () modum, reditus genus est CloseableHttpClient

Subclass res demonstrat parentis genus referat
Insert imaginem descriptionis hic

6) Rogationem mitte, rogatum exsequere modum, rem httppost transi, et exceptionem mitte.

Insert imaginem descriptionis hic

7)) Obiecto HttpResponsionis obiecto, suum getEntitatem methodum vocare potes ut obiectum responsionis Httpentity obtineat

Insert imaginem descriptionis hic

VIII) Voca modum modo definitur in modum principalis

Insert imaginem descriptionis hic

9) Curre

Insert imaginem descriptionis hic