2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Teknologiapinon yhteenveto:
①Javan perusteet (kapselointi, heijastus, yleiset ominaisuudet, jdbc)
②Asetustiedoston analyysi (ominaisuudet)
③http-asiakas (lähetä http-pyyntö)
④Fastjson ja jsonpath käsittelevät tietoja
⑤ Automaattisen testauskehyksen testauksen pääkohdat
⑥ houkutteleva testiraportti
Tiedosto—asetukset—maven
Fastjsonia ja jsonpathia käytetään molempia tietojen käsittelemiseen.
Automaatiokehyksen testauksen painopiste.
houkutteleva testiraportti
fastjson käsittelee json-merkkijonoja ja json-taulukoita
Jäsennä json-merkkijonon syöttöparametrit ja valmistaudu myöhempiä pyyntöjä varten
<!-https://mvnrepository.com/artifact/com.alibaba/fastjson -->
com.alibaba
fastison
1.2.75
Lataamisen jälkeen näet automaattisesti luodut riippuvuuspaketit.
Esimerkiksi sisäänkirjautuminen vaatii käyttäjätunnuksen ja salasanan.
{"käyttäjänimi":"qzcsbj","salasana":"123456"}
Automaatiokehyksen tietolähde, syöttöparametrit ovat kaikki json-merkkijonoja, fastjsonia on käytettävä
Class.Method, tämä menetelmä on staattinen
Jokainen kokoelman avain on merkkijono
Nyt määritetty json-merkkijono on jäsennetty ja sijoitettu karttaan
Ohjeet json-merkkijonon sisällön lisäämiseen karttaan
blog.csdnimg.cn/direct/ae6feeba2eae442f961df977a6c8eac1.jpeg)
Automaatiokehys sisältää alustuskehyksen, ja jotkut vaativat toimintoja sisällä oleville tiedoille.Käyttääksesi tietokantaa sinun on kirjoitettava sql
Tässä on json-taulukko Joukossa jokainen elementti on json-merkkijono, joka sisältää avainarvotiedot. Ensimmäinen on sql-numero, todellinen suoritettu sql.
[{"sqlNo":"1","sq!":"select * käyttäjistä, joissa käyttäjätunnus='qzcsbj';"},."sqlNo":"2","sql":"select * käyttäjistä, joissa käyttäjänimi ='test00501';”}]
Tämä menetelmä ei ole suositeltavaa
Anna kaksi parametria, ensimmäinen parametri on jäsennettävä merkkijono ja toinen parametri on tavukooditiedosto.
Ratkaisu on: jäsennä ensimmäinen parametrimerkkijono kartaksi
String sqlNo = (String)sql.get("sqlNo");
Kapseloi jokaisen json-merkkijonon sisältö objektiin l, lisää get- ja set-menetelmät entiteettiluokkaan ja suoraan object.get saadaksesi sql:n sisällön. Tällainen koodikehote on myös helpompi kirjoittaa. Automaatio viittaa myös tähän kapselointiin. Eli sql:n kapseloiminen objektiin,
Kapseloi ominaisuudet yksityisiksi (sqlNo, sql), anna get and set -menetelmät, parametroidut rakennusmenetelmät ja parametrittomat rakennusmenetelmät on lisättävä, ja reflektio säätää parametrittömiä rakennusmenetelmiä. Jos kirjoitat vain parametreja, etkä kirjoita parametrittömiä konstruktoreita, merkkijonotuloksen tulostamiseksi on lisättävä toString()-metodi, muuten objektin osoite tulostuu edellä oleva entiteettiluokka on kirjoitettu.
Optimoi se uudelleen
Jos elementti on kapseloitu objektiin, se muutetaan itse.luokka kirjoittamaksi luokkaksi
Se on sql.class
Toinen yllä oleva menetelmä on kapseloida jokainen elementti hashMap-objektiin, ja tässä on kapseloida jokainen elementti sql-objektiksi.
Hanki attribuutit objektista suoraan get-menetelmällä
Tämä menetelmä on kätevämpi, eikä sen tarvitse hankkia useita avaimia.
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>
sql-luokka
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_);
}
}
}
Koska tällä hetkellä projekti on erotettu etu- ja takapäästä.
Taustaohjelma palauttaa yleensä json-merkkijonot
Jos haluat esittää väitteitä, jäsennät yleensä jsonin jäsentämisen jälkeen.
Väitteet ovat yleensä koodi + avainliikekenttiä
Se on json-merkkijono, joten sinun on käytettävä jsonpathia
blog.csdnimg.cn/5bdd9defd7db47b7a5934f79f9fd0ceb.png)
On varmistettava, onko riippuvuudet ladattu
Tämä muuttuja tässä on vastauskenttä, joka palautetaan onnistuneen kirjautumisen jälkeen.
blog.csdnimg.cn/a20e89ee243c43f69a1b4e1c3a97b89b.png)
Välitä määritetty kenttävastaus
Käyttöliittymän automatisointi riippuvaisten tietojen käsittelyyn
Hanki token tämän rivin edestä, joka on myös $.
Jos se on globaali muuttuja, sen saamisen jälkeen se voidaan tallentaa globaaliin muuttujaan.
Jos haluat saada väitteen ja hanki se sitten
Esitä toinen väite
Automaatiokehyksessä pyynnöt lähetetään kirjoittamalla koodia, mikä tarkoittaa, että sinun on käytettävä Java:n tarjoamaa httpclient-kirjastoa vuorovaikutuksessa palvelimen kanssa.
Tunnus on läpäistävä
Kirjastosta näemme, että tunnus on 259
Datatiedostossa kaikki parametrit ketjutetaan json-merkkijonoihin, joten myös id=259 ketjutetaan json-merkkijonoihin.
Tässä laita 259 lainausmerkkeihin, jotta se vältetään automaattisesti.
hae pyyntö: http://47.108.153.47:18089/qzcsbj/user/findById?id=259
?Liitä parametrit suoraan myöhemmin
On myös useita huomioitavia arvoja: http://47.108.153.47:18089/qzcsbj/user/findById?id=259&name=jack
Yllä oleva ketjuttaa parametrin URL-osoitteen ja parametrit get-pyynnön lähettämiseksi Luomisen jälkeen sinun on luotava get request -objekti.
Välitä url
Täältä saat httpget-pyyntöobjektin
Abstrakti CloseableHttpClient-luokka toteuttaa HttpClient, Closeable -rajapinnan
Polymorfismia voidaan käyttää, ja alaluokkaobjekti osoittaa emoluokan viittaukseen (emoluokan toteuttamaan rajapintaan)
Tulos res on määritelty yllä
Juuri nyt
http://47.108.153.47:18089/qzcsbj/user/login
url, pyyntöparametrien parametrit, pyyntöjen otsikot
Nämä parametrit saadaan automaatiokehyksen tiedostoista.
Määrittele res
paluu res
Pass url
Jos katsot rakentajaa, voit ohittaa merkkijonon ja määrittää toisen rakentajan.
Yllä oleva on lähetetty postituspyyntö: pyynnön otsikko ja lähetettävät tiedot on määritelty.
Alaluokka-objekti osoittaa yläluokkaviittaukseen