내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
기술 스택 요약:
①Java 기초(캡슐화, 리플렉션, 제네릭, jdbc)
②구성 파일 분석(속성)
③httpclient (http 요청 보내기)
④Fastjson과 jsonpath는 데이터를 처리합니다.
⑤Testng 자동화 테스트 프레임워크의 핵심 포인트
⑥매혹시험성적서
파일—설정—maven
Fastjson과 jsonpath는 모두 데이터를 처리하는 데 사용됩니다.
테스트 자동화 프레임워크의 초점입니다.
매력 테스트 보고서
fastjson은 json 문자열과 json 배열을 처리합니다.
json 문자열 입력 매개변수를 구문 분석하고 후속 요청을 준비합니다.
<!-https://mvnrepository.com/artifact/com.alibaba/fastjson -->
com.알리바바
패스트슨
1.2.75
다운로드 후 자동으로 생성된 종속성 패키지를 볼 수 있습니다.
예를 들어 로그인하려면 사용자 이름과 비밀번호가 필요합니다.
{“사용자 이름”:“qzcsbj”, “비밀번호”:“123456”}
자동화 프레임워크 데이터 소스, 입력 매개변수는 모두 json 문자열이므로 fastjson을 사용해야 합니다.
Class.Method, 이 메서드는 정적입니다.
컬렉션의 각 키는 문자열입니다.
이제 정의된 json 문자열이 구문 분석되어 맵에 배치되었습니다.
json 문자열의 내용을 맵에 넣는 방법에 대한 지침
블로그.csdnimg.cn/direct/ae6feeba2eae442f961df977a6c8eac1.jpeg)
자동화 프레임워크에는 초기화 프레임워크가 포함되며 일부는 내부 데이터에 대한 작업이 필요합니다.데이터베이스를 운영하려면 sql을 작성해야 합니다.
다음은 json 배열입니다. 배열의 각 요소는 키 값 데이터를 포함하는 json 문자열입니다. 첫 번째 요소는 실제로 실행된 sql입니다.
[{“sqlNo”:“1”,“sq!”:“사용자 이름='qzcsbj'인 사용자 중에서 *를 선택하세요;”},.“sqlNo”:“2”,“sql”:“사용자 이름='test00501'인 사용자 중에서 *를 선택하세요;”}]
이 방법은 바람직하지 않습니다
두 개의 매개변수를 전달합니다. 첫 번째 매개변수는 구문 분석할 문자열이고 두 번째 매개변수는 바이트코드 파일입니다.
해결책은 다음과 같습니다. 첫 번째 매개변수 문자열을 맵으로 구문 분석합니다.
String sqlNo = (String)sql.get("sqlNo");
각 json 문자열의 내용을 객체 l로 캡슐화하고, 엔터티 클래스에 get 및 set 메서드를 추가하고, 직접 object.get을 얻고, sql의 내용을 가져오는 것도 작성하기 더 편리합니다. 자동화도 이 캡슐화를 참조합니다. 즉, SQL을 객체로 캡슐화하는 것입니다.
속성을 비공개(sqlNo, sql)로 캡슐화하고 get 및 set 메서드를 제공하고 매개변수화된 생성 메서드와 매개변수 없는 생성 메서드를 추가해야 하며 리플렉션은 매개변수 없는 생성 메서드를 조정합니다. 매개변수 없는 생성자를 작성하지 않고 매개변수 없는 생성자만 작성하면 반드시 오류가 보고됩니다. 문자열 결과를 인쇄하려면 toString() 메서드를 추가해야 합니다. 그렇지 않으면 객체의 주소가 인쇄됩니다. 위의 엔터티 클래스가 작성되었습니다.
다시 최적화해 보세요
요소가 객체로 캡슐화되면 자신이 작성한 클래스로 변경됩니다.class
sql.class 입니다
위의 두 번째 방법은 각 요소를 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를 사용해야 합니다.
블로그.csdnimg.cn/5bdd9defd7db47b7a5934f79f9fd0ceb.png)
종속성이 다운로드되었는지 확인해야 합니다.
여기서 이 변수는 로그인 성공 후 반환되는 응답 필드입니다.
블로그.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
위의 내용은 get 요청을 보내기 위한 매개변수 url과 매개변수를 연결합니다. 생성 후 get 요청 개체를 만들어야 합니다.
URL을 전달하세요.
여기서 httpget 요청 객체를 얻습니다.
CloseableHttpClient 추상 클래스는 Closeable 인터페이스인 HttpClient를 구현합니다.
다형성을 사용할 수 있으며 하위 클래스 객체는 상위 클래스 참조(상위 클래스에 의해 구현된 인터페이스)를 가리킵니다.
결과 res는 위에 정의되어 있습니다.
지금 바로
http://47.108.153.47:18089/qzcsbj/사용자/로그인
URL, 요청 매개변수 매개변수, 요청 헤더
이러한 매개변수는 자동화 프레임워크의 데이터 파일에서 가져옵니다.
해상도 정의
해상도 반환
URL 전달
생성자를 보면 String을 전달하고 두 번째 생성자를 지정할 수 있습니다.
위는 보낸 게시물 요청입니다. 요청 헤더와 보낼 데이터가 모두 정의되어 있습니다.
하위 클래스 객체는 상위 클래스 참조를 가리킵니다.