minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Resumo da pilha de tecnologia:
①Noções básicas de Java (encapsulamento, reflexão, genéricos, jdbc)
②Análise do arquivo de configuração (propriedades)
③httpclient (enviar solicitação http)
④Fastjson e jsonpath processam dados
⑤Pontos-chave da estrutura de teste automatizado de teste
⑥relatório de teste de fascínio
Arquivo—configurações—maven
Fastjson e jsonpath são usados para processar dados.
O foco da estrutura de automação de testes.
relatório de teste de fascínio
fastjson processa strings json e matrizes json
Analise os parâmetros de entrada da string json e prepare-se para solicitações subsequentes
<!-https://mvnrepository.com/artifact/com.alibaba/fastjson -->
com.alibaba
Fastison-O
1.2.75
Após o download, você poderá ver os pacotes de dependência gerados automaticamente.
Por exemplo, o login requer um nome de usuário e uma senha.
{“nome de usuário”:“qzcsbj”, “senha”:“123456”}
Fonte de dados da estrutura de automação, parâmetros de entrada são todos strings json, fastjson precisa ser usado
Class.Method, este método é estático
Cada chave da coleção é String
A string json definida agora foi analisada e colocada no mapa
Instruções para colocar o conteúdo da string json no mapa
blog.csdnimg.cn/direct/ae6feeba2eae442f961df977a6c8eac1.jpeg)
A estrutura de automação envolve uma estrutura de inicialização e algumas exigem operações nos dados internos.Para operar o banco de dados, você precisa escrever sql
Aqui está uma matriz json. Na matriz, cada elemento é uma string json, que contém dados de valor-chave. O primeiro é o número sql, o sql realmente executado.
[{“sqlNo”:“1”,“sq!”:“selecione * de usuários onde nome de usuário='qzcsbj';”},.“sqlNo”:“2”,“sql”:“selecione * de usuários onde nome de usuário='test00501';”}]
Este método não é aconselhável
Passe dois parâmetros, o primeiro parâmetro é a String a ser analisada e o segundo parâmetro é o arquivo de bytecode.
A solução é: analisar o primeiro parâmetro String em um mapa
String sqlNo = (String)sql.get("sqlNo");
Encapsule o conteúdo de cada string json em um objeto l, adicione métodos get e set à classe de entidade e diretamente object.get para obter o conteúdo do sql. Esse tipo de prompt de código também é mais conveniente de escrever. A automação também faz referência a esse encapsulamento. Isso é encapsular o sql em um objeto,
Encapsule as propriedades como privadas (sqlNo, sql), forneça métodos get e set, métodos de construção parametrizados e métodos de construção sem parâmetros devem ser adicionados, e a reflexão ajustará os métodos de construção sem parâmetros. Se você escrever apenas parâmetros com parâmetros e não escrever construtores sem parâmetros, um erro será definitivamente relatado. Para imprimir o resultado da string, você precisa adicionar o método toString(), caso contrário, o endereço do objeto será impresso. a classe de entidade acima foi escrita.
Otimize novamente
Se o elemento for encapsulado em um objeto, ele será alterado para uma classe escrita por você mesmo.class
Isso é sql.class
O segundo método acima é encapsular cada elemento em um objeto hashMap, e aqui é encapsular cada elemento em um objeto sql.
Obtenha atributos do objeto diretamente usando o método get
Este método é mais conveniente e não requer a obtenção de muitas chaves.
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_);
}
}
}
Porque atualmente o projeto está separado do front e back-end.
O back-end geralmente retorna strings json
Se você quiser fazer asserções, geralmente analisa JSON. Após a análise, você geralmente faz asserções apenas em campos-chave.
As asserções geralmente são código + campos comerciais principais
É uma string json, então você precisa usar jsonpath
blog.csdnimg.cn/5bdd9defd7db47b7a5934f79f9fd0ceb.png)
Precisa confirmar se as dependências foram baixadas
Esta variável aqui é o campo de resposta retornado após login bem-sucedido.
blog.csdnimg.cn/a20e89ee243c43f69a1b4e1c3a97b89b.png)
Passe a resposta do campo definido
Automação de interface para processamento de dados dependentes
Obtenha o token no início desta linha, que também é $.
Após obtê-la, se for uma variável global, pode ser salva na variável global.
Se você deseja obter a afirmação e depois obtê-la
Faça outra afirmação
No framework de automação, as solicitações são enviadas por meio da escrita de código, o que significa que é necessário usar httpclient, uma biblioteca fornecida por Java para interagir com o servidor.
Precisa passar o ID
Na biblioteca, podemos ver que o id é 259
No arquivo de dados, todos os parâmetros são concatenados em strings json, então id=259 também é concatenado em strings json.
Aqui, coloque 259 entre aspas duplas para escapar automaticamente.
obter solicitação: http://47.108.153.47:18089/qzcsbj/user/findById?id=259
?Unir parâmetros diretamente mais tarde
Existem também vários valores a serem considerados: http://47.108.153.47:18089/qzcsbj/user/findById?id=259&name=jack
O acima irá concatenar o parâmetro url e os parâmetros para enviar a solicitação get. Após a criação, você precisa criar um objeto de solicitação get.
Passe a URL
Aqui você obtém o objeto de solicitação httpget
A classe abstrata CloseableHttpClient implementa a interface HttpClient, Closeable
O polimorfismo pode ser usado e o objeto da subclasse aponta para a referência da classe pai (a interface implementada pela classe pai)
O resultado res é definido acima
Agora mesmo
http://47.108.153.47:18089/qzcsbj/usuário/login
url, parâmetros de parâmetros de solicitação, cabeçalhos de solicitação
Esses parâmetros são obtidos de arquivos de dados na estrutura de automação.
Definir resolução
retornar res
URL de passagem
Se você observar o construtor, poderá passar String e especificar o segundo construtor.
O acima é a solicitação de postagem enviada: o cabeçalho da solicitação e os dados a serem enviados estão todos definidos.
O objeto da subclasse aponta para a referência da classe pai