le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Riepilogo dello stack tecnologico:
①Nozioni di base su Java (incapsulamento, riflessione, generici, jdbc)
②Analisi del file di configurazione (proprietà)
③httpclient (invia richiesta http)
④Fastjson e jsonpath elaborano i dati
⑤Punti chiave del framework di test automatizzato
⑥rapporto di prova di attrazione
File—impostazioni—maven
Fastjson e jsonpath sono entrambi utilizzati per elaborare i dati.
Il focus del testing del framework di automazione.
rapporto di prova di attrazione
fastjson elabora stringhe json e array json
Analizza i parametri di input della stringa JSON e preparati per le richieste successive
<!-https://mvnrepository.com/artifact/com.alibaba/fastjson -->
com.alibaba
fastione
1.2.75
Dopo il download, puoi vedere i pacchetti di dipendenze generati automaticamente.
Ad esempio, l'accesso richiede un nome utente e una password.
{“nome utente”:“qzcsbj”, “password”:“123456”}
Origine dati del framework di automazione, i parametri di input sono tutte stringhe JSON, è necessario utilizzare fastjson
Class.Method, questo metodo è statico
Ogni chiave nella raccolta è String
La stringa json ora definita è stata analizzata e inserita nella mappa
Istruzioni per inserire il contenuto della stringa json nella mappa
blog.csdnimg.cn/direct/ae6feeba2eae442f961df977a6c8eac1.jpeg)
Il framework di automazione prevede un framework di inizializzazione e alcuni richiedono operazioni sui dati all'interno.Per far funzionare il database, è necessario scrivere sql
Ecco un array json. Nell'array, ogni elemento è una stringa json, che contiene i dati del valore chiave. Il primo è il numero sql, l'effettivo sql eseguito.
[{“sqlNo”:“1”,“sq!”:“select * from users where username='qzcsbj';”},.“sqlNo”:“2”,“sql”:“select * from users where username='test00501';”}]
Questo metodo non è consigliabile
Passare due parametri, il primo parametro è la stringa da analizzare e il secondo parametro è il file bytecode.
La soluzione è: analizzare la prima stringa di parametri in una mappa
String sqlNo = (String)sql.get("sqlNo");
Incapsula il contenuto di ogni stringa json in un oggetto l, aggiungi i metodi get e set alla classe di entità, direttamente object.get, e ottieni il contenuto di sql. Questo tipo di prompt del codice è anche più comodo da scrivere. Anche l'automazione fa riferimento a questo incapsulamento. Cioè incapsulare SQL in un oggetto,
Incapsulare le proprietà come private (sqlNo, sql), fornire metodi get e set, metodi di costruzione con parametri e metodi di costruzione senza parametri da aggiungere e la riflessione regolerà i metodi di costruzione senza parametri. Se si scrive solo il costruttore senza parametri senza scrivere il costruttore senza parametri, verrà sicuramente segnalato un errore. Per stampare il risultato della stringa, è necessario aggiungere il metodo toString(), altrimenti verrà stampato l'indirizzo dell'oggetto. La classe di entità sopra è stata scritta.
Ottimizzalo di nuovo
Se l'elemento è incapsulato in un oggetto, viene modificato in una classe scritta da te.class
Questo è sql.class
Il secondo metodo sopra riportato consiste nell'incapsulare ciascun elemento in un oggetto hashMap, e qui è incapsulare ciascun elemento in un oggetto sql.
Ottieni gli attributi dall'oggetto direttamente utilizzando il metodo get
Questo metodo è più conveniente e non richiede di ottenere molte chiavi.
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>
classe sql
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 + ''' +
'}';
}
}
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));
}
}
}
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_);
}
}
}
Perché attualmente il progetto è separato dalle estremità anteriore e posteriore.
Il backend generalmente restituisce stringhe json
Se vuoi fare asserzioni, di solito analizzi json Dopo l'analisi, di solito fai asserzioni solo sui campi chiave.
Le asserzioni sono generalmente codice + campi aziendali chiave
È una stringa json, quindi è necessario utilizzare jsonpath
blog.csdnimg.cn/5bdd9defd7db47b7a5934f79f9fd0ceb.png)
È necessario verificare se le dipendenze sono state scaricate
Questa variabile qui è il campo di risposta restituito dopo l'accesso riuscito.
blog.csdnimg.cn/a20e89ee243c43f69a1b4e1c3a97b89b.png)
Passa nella risposta del campo definita
Automazione dell'interfaccia per l'elaborazione dei dati dipendenti
Prendi il token dalla parte anteriore di questa riga, che è anche $.
Dopo averla ottenuta, se si tratta di una variabile globale, è possibile salvarla nella variabile globale.
Se vuoi ottenere l'affermazione e poi ottenerla
Fai un'altra affermazione
Nel framework di automazione, le richieste vengono inviate scrivendo codice, il che significa che è necessario utilizzare httpclient, una libreria fornita da Java per interagire con il server.
È necessario passare l'ID
Dalla libreria, possiamo vedere che l'id è 259
Nel file di dati, i parametri sono tutti concatenati in stringhe json, quindi anche id=259 è concatenato in stringhe json.
Qui, inserisci 259 tra virgolette doppie per evitarlo automaticamente.
ottieni richiesta: http://47.108.153.47:18089/qzcsbj/user/findById?id=259
?Unisci direttamente i parametri in un secondo momento
Ci sono anche più valori da considerare: http://47.108.153.47:18089/qzcsbj/user/findById?id=259&name=jack
Quanto sopra concatenerà l'URL del parametro e i parametri per l'invio della richiesta get. Dopo la creazione, è necessario creare un oggetto richiesta get.
Passa l'URL
Qui ottieni l'oggetto della richiesta httpget
La classe astratta CloseableHttpClient implementa l'interfaccia HttpClient, Closeable
È possibile utilizzare il polimorfismo e l'oggetto della sottoclasse punta al riferimento della classe genitore (l'interfaccia implementata dalla classe genitore)
Il risultato res è definito sopra
Proprio adesso
http://47.108.153.47:18089/qzcsbj/utente/accesso
URL, parametri dei parametri della richiesta, intestazioni della richiesta
Questi parametri sono ottenuti da file di dati nel framework di automazione.
Definire ris
ritorno ris
Passa l'URL
Se guardi il costruttore, puoi passare String e specificare il secondo costruttore.
Quella sopra è la richiesta post inviata: l'intestazione della richiesta e i dati da inviare sono tutti definiti.
L'oggetto sottoclasse punta al riferimento alla classe genitore