моя контактная информация
Почтамезофия@protonmail.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.alibaba
фастисон
1.2.75
После загрузки вы сможете увидеть автоматически сгенерированные пакеты зависимостей.
Например, для входа в систему требуется имя пользователя и пароль.
{«имя пользователя»:«qzcsbj», «пароль»:«123456»}
Источник данных платформы автоматизации, все входные параметры – это строки json, необходимо использовать fastjson.
Class.Method, этот метод статический
Каждый ключ в коллекции — это строка.
Теперь определенная строка json была проанализирована и помещена на карту.
Инструкции по помещению содержимого строки json на карту
(блоггинг.csdnimg.cn/direct/ae6feeba2eae442f961df977a6c8eac1.jpeg)
Платформа автоматизации включает в себя структуру инициализации, а некоторые требуют операций с данными внутри.Для работы с базой данных нужно написать sql
Вот массив json. В массиве каждый элемент представляет собой строку json, которая содержит данные значения ключа. Первый — это номер sql, фактически выполненный 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.класс
Второй метод, описанный выше, заключается в инкапсуляции каждого элемента в объект 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)
Передать ответ в определенном поле
Автоматизация интерфейса обработки зависимых данных
Получите токен в начале этой строки, который также равен $.
После получения, если это глобальная переменная, ее можно сохранить в глобальной переменной.
Если вы хотите получить утверждение, а затем получить его
Сделайте еще одно утверждение
В рамках автоматизации запросы отправляются путем написания кода, а это значит, что вам нужно использовать httpclient — библиотеку, предоставляемую Java, для взаимодействия с сервером.
Нужно передать идентификатор
Из библиотеки мы видим, что идентификатор равен 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-адрес параметра и параметры для отправки запроса на получение. После создания вам необходимо создать объект запроса на получение.
Передайте URL-адрес
Здесь вы получаете объект запроса httpget.
Абстрактный класс CloseableHttpClient реализует интерфейс HttpClient, Closeable.
Можно использовать полиморфизм, и объект подкласса указывает на ссылку родительского класса (интерфейс, реализованный родительским классом).
Результирующее разрешение определено выше
Прямо сейчас
http://47.108.153.47:18089/qzcsbj/user/login
URL, параметры параметров запроса, заголовки запроса
Эти параметры получаются из файлов данных в системе автоматизации.
Определить разрешение
вернуть разрешение
Передать URL
Если вы посмотрите на конструктор, вы можете передать String и указать второй конструктор.
Выше представлен отправленный почтовый запрос: заголовок запроса и данные, которые будут отправлены, определены.
Объект подкласса указывает на ссылку родительского класса