私の連絡先情報
郵便メール:
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
テクノロジースタックの概要:
①Javaの基礎(カプセル化、リフレクション、ジェネリックス、jdbc)
②設定ファイル解析(プロパティ)
③httpclient(httpリクエストを送信)
④Fastjsonとjsonpathの処理データ
⑤自動テストフレームワークのテストのポイント
⑥魅力テストレポート
ファイル - 設定 - Maven
Fastjson と jsonpath は両方ともデータの処理に使用されます。
テスト自動化フレームワークの焦点。
アリュールテストレポート
fastjson は json 文字列と json 配列を処理します
json 文字列入力パラメータを解析し、後続のリクエストに備える
<!-https://mvnrepository.com/artifact/com.alibaba/fastjson -->
アリババ
ファスティソン
1.2.75
ダウンロード後、自動生成された依存関係パッケージを確認できます。
たとえば、ログインにはユーザー名とパスワードが必要です。
{“ユーザー名”:“qzcsbj”, “パスワード”:“123456”}
オートメーション フレームワーク データ ソース、入力パラメーターはすべて json 文字列、fastjson を使用する必要があります
Class.Method、このメソッドは静的です
コレクション内の各キーは文字列です
現在定義されている json 文字列が解析され、マップに配置されました。
JSON文字列の内容をマップに入れる手順
ブログ (blog.csdnimg.cn/direct/ae6feeba2eae442f961df977a6c8eac1.jpeg)
自動化フレームワークには初期化フレームワークが含まれており、一部のフレームワークでは内部のデータに対する操作が必要になります。データベースを操作するにはSQLを書く必要があります
これは json 配列です。配列内の各要素はキー値データを含む json 文字列です。最初の要素は SQL 番号、つまり実際に実行された SQL です。
[{“sqlNo”:“1”,“sq!”:“select * from users where username='qzcsbj';”},.“sqlNo”:“2”,“sql”:“select * from users where username='test00501';”}]
この方法はお勧めできません
2 つのパラメータを渡します。最初のパラメータは解析する文字列、2 番目のパラメータはバイトコード ファイルです。
解決策は、最初のパラメータ文字列を解析してマップに変換することです。
String sqlNo = (String)sql.get("sqlNo");
各 json 文字列の内容をオブジェクト l にカプセル化し、エンティティ クラスに get メソッドと set メソッドを追加して、直接 object.get し、SQL の内容を取得します。この種のコード プロンプトも作成するのに便利です。自動化もこのカプセル化を参照します。つまり SQL をオブジェクトにカプセル化することです。
プロパティをプライベート (sqlNo、sql) としてカプセル化し、get メソッドと set メソッド、パラメータ化された構築メソッド、およびパラメータなしの構築メソッドを追加する必要があり、リフレクションによってパラメータなしの構築メソッドが調整されます。パラメーターなしのコンストラクターを書かずにパラメーターなしのコンストラクターのみを書いた場合、文字列の結果を出力するには、toString() メソッドを追加する必要があります。追加しないと、オブジェクトのアドレスが出力されます。上記のエンティティクラスが記述されました。
再度最適化します
要素がオブジェクトにカプセル化されている場合は、自分で作成したクラスに変更されます。class
それがsql.classです
上記の 2 番目の方法は、各要素を hashMap オブジェクトにカプセル化するもので、ここでは各要素を SQL オブジェクトにカプセル化します。
get メソッドを使用してオブジェクトから属性を直接取得します。
この方法はより便利であり、多くのキーを取得する必要がありません。
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クラス
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_);
}
}
}
現在、プロジェクトはフロントエンドとバックエンドに分離されているためです。
バックエンドは通常、json 文字列を返します。
アサーションを行う場合は、通常、json を解析します。解析後は、キー フィールドに対してのみアサーションを行います。
アサーションは通常、コード + 主要なビジネス フィールドです
これはjson文字列なので、jsonpathを使用する必要があります
(blog.csdnimg.cn/5bdd9defd7db47b7a5934f79f9fd0ceb.png) 翻訳:
依存関係がダウンロードされたかどうかを確認する必要がある
ここでのこの変数は、ログインに成功した後に返される応答フィールドです。
(blog.csdnimg.cn/a20e89ee243c43f69a1b4e1c3a97b89b.png) 翻訳:
定義されたフィールド応答を渡します
依存データを処理するためのインターフェイスの自動化
この行の先頭からトークンを取得します。これも $ です。
取得後、グローバル変数であればグローバル変数に保存できます。
アサーションを取得してから取得したい場合
別の主張をする
オートメーション フレームワークでは、コードを記述することによってリクエストが送信されます。つまり、サーバーと対話するために Java が提供するライブラリである httpclient を使用する必要があります。
IDを渡す必要があります
ライブラリから、ID が 259 であることがわかります。
データ ファイルでは、パラメーターはすべて json 文字列に連結されるため、id=259 も json 文字列に連結されます。
ここでは、259 を二重引用符で囲んで自動的にエスケープします。
リクエストの取得: http://47.108.153.47:18089/qzcsbj/user/findById?id=259
?後でパラメータを直接結合する
考慮すべき値も複数あります: http://47.108.153.47:18089/qzcsbj/user/findById?id=259&name=jack
上記はパラメータ URL と get リクエストを送信するためのパラメータを連結します。作成後、get リクエスト オブジェクトを作成する必要があります。
URLを渡します
ここで httpget リクエスト オブジェクトを取得します
CloseableHttpClient 抽象クラスは、HttpClient、Closeable インターフェイスを実装します。
ポリモーフィズムを使用でき、サブクラス オブジェクトは親クラス参照 (親クラスによって実装されたインターフェイス) を指します。
結果の res は上で定義されています
今すぐ
http://47.108.153.47:18089/qzcsbj/ユーザー/ログイン
URL、リクエストパラメータパラメータ、リクエストヘッダー
これらのパラメーターは、自動化フレームワークのデータ ファイルから取得されます。
解像度を定義する
応答を返す
URLを渡す
コンストラクターを見ると、String を渡して 2 番目のコンストラクターを指定できます。
上記は送信されたポストリクエストです。リクエストヘッダーと送信されるデータはすべて定義されています。
サブクラスオブジェクトが親クラス参照を指す