Mi informacion de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Resumen de la pila de tecnología:
①Conceptos básicos de Java (encapsulación, reflexión, genéricos, jdbc)
②Análisis del archivo de configuración (propiedades)
③httpclient (enviar solicitud http)
④Datos de proceso Fastjson y jsonpath
⑤Puntos clave del marco de pruebas automatizadas de prueba
⑥ informe de prueba de atractivo
Archivo—configuraciones—maven
Fastjson y jsonpath se utilizan para procesar datos.
El enfoque del marco de automatización de pruebas.
informe de prueba de atractivo
fastjson procesa cadenas json y matrices json
Analizar los parámetros de entrada de la cadena json y prepararse para solicitudes posteriores
<!-https://mvnrepository.com/artifact/com.alibaba/fastjson -->
com.alibaba
fastison
1.2.75
Después de la descarga, puede ver los paquetes de dependencia generados automáticamente.
Por ejemplo, para iniciar sesión se requiere un nombre de usuario y una contraseña.
{“nombre de usuario”:“qzcsbj”, “contraseña”:“123456”}
Fuente de datos del marco de automatización, los parámetros de entrada son todas cadenas json, es necesario usar fastjson
Class.Method, este método es estático
Cada clave de la colección es String.
La cadena json definida ahora ha sido analizada y colocada en el mapa.
Instrucciones para poner el contenido de la cadena json en el mapa
(blog.csdnimg.cn/direct/ae6feeba2eae442f961df977a6c8eac1.jpeg)
El marco de automatización implica un marco de inicialización y algunos requieren operaciones en los datos internos.Para operar la base de datos, debe escribir sql
Aquí hay una matriz json. En la matriz, cada elemento es una cadena json, que contiene datos de valor clave. El primero es el número de sql, el sql ejecutado real.
[{“sqlNo”:“1”,“sq!”:“seleccione * de los usuarios donde nombre de usuario='qzcsbj';”},.“sqlNo”:“2”,“sql”:“seleccione * de los usuarios donde nombre de usuario='test00501';”}]
Este método no es aconsejable.
Pase dos parámetros, el primer parámetro es la cadena que se va a analizar y el segundo parámetro es el archivo de código de bytes.
La solución es: analizar la cadena del primer parámetro en un mapa
String sqlNo = (String)sql.get("sqlNo");
Encapsule el contenido de cada cadena json en un objeto l, agregue métodos get y set a la clase de entidad y directamente object.get para obtener el contenido de sql. Este tipo de solicitud de código también es más conveniente de escribir. La automatización también hace referencia a esta encapsulación. Eso es encapsular SQL en un objeto,
Encapsule las propiedades como privadas (sqlNo, sql), proporcione métodos get y set, se deben agregar métodos de construcción parametrizados y métodos de construcción sin parámetros, y la reflexión ajustará los métodos de construcción sin parámetros. Si solo escribe parámetros con parámetros y no escribe constructores sin parámetros, definitivamente se informará un error. Para imprimir el resultado de la cadena, debe agregar el método toString (); de lo contrario, se imprimirá la dirección del objeto. Se ha escrito la clase de entidad anterior.
Optimízalo de nuevo
Si el elemento se encapsula en un objeto, se cambia a una clase escrita por usted mismo.clase
Eso es sql.class
El segundo método anterior es encapsular cada elemento en un objeto hashMap, y aquí es encapsular cada elemento en un objeto SQL.
Obtenga atributos del objeto directamente usando el método get
Este método es más conveniente y no necesita obtener muchas claves.
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>
clase 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 actualmente, el proyecto está separado del front-end y del back-end.
El backend generalmente devuelve cadenas json
Si desea hacer afirmaciones, generalmente analiza json. Después del análisis, generalmente solo realiza afirmaciones en campos clave.
Las afirmaciones son generalmente código + campos comerciales clave.
Es una cadena json, por lo que necesitas usar jsonpath
blog.csdnimg.cn/5bdd9defd7db47b7a5934f79f9fd0ceb.png)
Es necesario confirmar si las dependencias se han descargado.
Esta variable aquí es el campo de respuesta devuelto después de iniciar sesión correctamente.
blog.csdnimg.cn/a20e89ee243c43f69a1b4e1c3a97b89b.png)
Pasar la respuesta del campo definido
Automatización de interfaz para procesar datos dependientes.
Obtenga el token del frente de esta línea, que también es $.
Después de obtenerla, si es una variable global, se puede guardar en la variable global.
Si desea obtener la afirmación y luego obtenerla
hacer otra afirmación
En el marco de automatización, las solicitudes se envían escribiendo código, lo que significa que es necesario utilizar httpclient, una biblioteca proporcionada por Java para interactuar con el servidor.
Necesito pasar identificación
Desde la biblioteca podemos ver que el id es 259.
En el archivo de datos, todos los parámetros están concatenados en cadenas json, por lo que id=259 también está concatenado en cadenas json.
Aquí, ponga 259 entre comillas dobles para escapar automáticamente.
obtener solicitud: http://47.108.153.47:18089/qzcsbj/user/findById?id=259
?Parámetros de empalme directo más tarde
También hay varios valores a considerar: http://47.108.153.47:18089/qzcsbj/user/findById?id=259&name=jack
Lo anterior concatenará la URL del parámetro y los parámetros para enviar la solicitud de obtención. Después de la creación, debe crear un objeto de solicitud de obtención.
Pasa la URL en
Aquí obtienes el objeto de solicitud httpget.
La clase abstracta CloseableHttpClient implementa la interfaz HttpClient, Closeable
Se puede utilizar el polimorfismo y el objeto de la subclase apunta a la referencia de la clase principal (la interfaz implementada por la clase principal)
El resultado res se define arriba
Ahora mismo
http://47.108.153.47:18089/qzcsbj/usuario/inicio de sesión
URL, parámetros de parámetros de solicitud, encabezados de solicitud
Estos parámetros se obtienen de archivos de datos en el marco de automatización.
Definir resolución
devolver resolución
Pasar URL
Si observa el constructor, puede pasar String y especificar el segundo constructor.
Lo anterior es la solicitud posterior enviada: el encabezado de la solicitud y los datos a enviar están definidos.
El objeto de subclase apunta a la referencia de la clase principal.