1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/tuboyou-requestQ

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 11 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 17:16 744901e

Интерфейс тестирования

Архитектура ПО

«Используем Python и Requests для создания простой инфраструктуры requestQ. Сейчас она находится в стадии тестирования».

Установка

pip install requestQ

Использование

1. Основные компоненты
  • dorequest — базовый компонент для отправки HTTP-запросов.
  • item — компонент, который проверяет значения dorequest и может быть использован как тестовый сценарий для интерфейса.
  • Case/Cases — концепция конкретного сценария, которая может объединять несколько элементов item и использовать общие переменные.
1.1 Пример
from requestQ import item, Case, Cases
item1 = item("name1", data1).expect('data.code').toBe(1).expect('data.status').toBeTruthy().save('data.token', 'token')
item2 = item("name1", {"aaa": "asdada${token}"}).expect('data.code').toBe(1).expect('data.status').toBeTruthy()
...
Cases(Case("casename", item1, item2, ...), Case(xxxx))
2. Использование dorequest
from requestQ.package.dorequest import DoRequest
req = DoRequest()

DoRequest имеет три основных метода:
* add_session_headers(header: dict) — добавляет общие заголовки запросов, такие как cookie.
* run(method: str, url: str, data=None, is_auto=True, **kwargs) — выполняет проверку запроса.
* commit() — отправляет запрос.

У DoRequest есть три константы:
* req.status — показывает состояние выполнения.
* req.e — показывает ошибку выполнения.
* req.is_commit — показывает, был ли запрос отправлен.

##### 2.1 Использование add_session_headers

Записываем словарь с заголовками запросов

req.add_session_headers({"cookie": "asdadad12123123"})


##### 2.2 Использование run

Пример доступа к Baidu

req.run("get", "http://www.baidu.com")

Параметры:

  • method — метод запроса (например, get или post), обязательный.
  • url — URL запроса, обязательно должен содержать http или https, обязательный.
  • data — тело запроса в формате dict, str или "xxx=yyy&sss=www", опционально.
  • is_auto — автоматически ли отправлять запрос после выполнения run, по умолчанию true.
  • kwargs — словарь с параметрами, опционально, поддерживает следующие ключи:
    • files — путь к файлу для загрузки, формат str.
    • file_name — имя файла для загрузки, формат str (по умолчанию имя файла).
    • headers — заголовки запроса в формате dict {xxx: yyy, sss: www}.
    • session_headers — общие заголовки в формате dict {xxx: yyy, sss: www}.
    • proxies — настройки прокси в формате ip:port.

##### 2.3 Использование commit

req.commit()

Возвращает результат отправки или ошибку.


##### 3. Использование item

from requestQ import item item(name: str, data: dict, des='', func: str = 'http', priority='中')

Параметры:

  • name — уникальное название запроса, обязательное.
  • data — данные для запроса в формате dict для удобства расширения, обязательное.
  • des — описание запроса, не влияет на работу, просто информация.
  • func — тип запроса по умолчанию http, можно расширить.
  • priority — приоритет запроса, без влияния на работу (для отображения в отчётах).

item имеет восемь методов:

  • run(func) — используется для отладки, аналогично item(xxx).run(Dorequest()).
  • debug(func) — также используется для отладки, аналогично item(xxx).debug(Dorequest()), но с паузой для просмотра данных.
  • addLocal(local: dict, glo: dict) — добавление локальных и глобальных переменных перед run и debug.
  • save(catch: str, name: str, method: str = 'json', is_global=False) — сохранение значений в переменных.
  • expect(catch: str, method: str = 'json') — извлечение значений для последующей обработки, основной метод.
  • print_log() — печать журнала выполнения.
  • do_req(func) — определение функции перед run для предварительной обработки запроса.
  • do_res(func) — определение функции перед проверкой для предварительной обработки результата.

Также у item есть вспомогательные методы, которые не участвуют в тестовых сценариях, а только помогают создавать данные:

  • fetch(url, data, replace=None) — использование аналогично копированию запроса из Chrome Network, удаление точки с запятой и применение к данным. Возвращает данные запроса. Недостаток — не получает значение cookie.
  • raw(str) — аналогично использованию Fiddler для получения данных запроса путём копирования из Raw.

##### 3.1 Использование run/debug

item(name: str, data: dict, des='', func: str = 'http', priority='中').run(Dorequest()) item(name: str, data: dict, des='', func: str = 'http', priority='中').expect('data.code').toBe(1).debug(Dorequest())

Запускает скрипт и отображает результаты. Данные могут быть параметризованы с использованием ${xxxx}, где xxxx — ключ переменной среды.


##### 3.2 Использование addLocal

item(name: str, data: dict, des='', func: str = 'http', priority='中').addLocal({"a":1},{"b":2}).run(Dorequest())

Добавляет переменные в localdict.


##### 3.3 Использование save

#Пример item(name: str, data: dict, des='', func: str = 'http', priority='中').save("data.token","token").run(Dorequest())

После выполнения сохраняет значение в localdict с ключом token.

Параметры:

  • catch — способ извлечения значения, например, из {“data”:{"status":1,"list":[{"s":1},{"d":2}]}} можно извлечь status или s из list[0].
  • name — ключ сохранённого значения.
  • method — режим извлечения, json по умолчанию, также доступны regex и size.
  • regex — метод извлечения с помощью регулярного выражения, например xxx(.+)1313.
  • size — возвращает длину значения.

##### 3.4 Использование print_log

item(name: str, data: dict, des='', func: str = 'http', priority='中').run(Dorequest()).print_log()

Выводит журнал выполнения.


##### 3.5 Использование expect

#Пример item("name1",{"aaa":"asdada${token}"}).expect('data.code')

Проверяет значение и сравнивает его с ожидаемым.

Методы сравнения:

  • toBe(val)
  • notToBe(val)
  • notToBeNone()
  • toBeNone()
  • toBeTruthy()
  • toBeFalsy()
  • toBeGreaterThanOrEqual(num)
  • toBeGreaterThan(num)
  • toBeLessThan(num)
  • toBeLessThanOrEqual()
  • toMatch(val)
  • notToMatch(val)
  • toContain(val)
  • notToContain(val).

Здесь val — любое значение, num — число, Match — регулярное выражение.


##### 4. Использование Case/Cases

Case("casename",item(xxxx))

Case представляет собой полный тестовый сценарий с одним или несколькими элементами item. ### Параметры:

name — название сценария использования.

items — произвольное количество элементов.

Основные методы включают два:

  1. add_source(source, name) используется для расширения последующих методов.
  2. run(allow_print_detail=[], allow_print_res=True) используется для запуска элемента.

Использование метода add_source

Пример:
Case(xxx).add_source(Domysql(),"mysql")
Используется для последующего расширения.

Использование метода run

Пример:
Case(xxx).run()
Параметры:
* allow_print_detail — формат: список, ввод имени элемента для отображения конкретного журнала (по умолчанию не отображается, опционально);
* allow_print_res — режим True, отображает простой результат выполнения (опционально).
Cases(Case(xx)...): выполнение сценариев использования без метода.

**Установка**
1. xxxx.
2. xxxx.
3. xxxx.

**Использование**
1. xxxx.
2. xxxx.
3. xxxx.

**Вклад в проект**
1. Форкните этот репозиторий.
2. Создайте ветку Feat_xxx.
3. Отправьте код.
4. Создайте Pull Request.

**Специальные возможности кода Cloud**
1. Используйте Readme_XXX.md для поддержки разных языков, например Readme_en.md, Readme_zh.md.
2. Официальный блог кода Cloud: blog.gitee.com.
3. Вы можете посетить адрес https://gitee.com/explore, чтобы узнать об отличных проектах с открытым исходным кодом на коде Cloud.
4. GVP — это аббревиатура от «Самые ценные проекты с открытым исходным кодом кода Cloud», которая представляет собой подборку отличных проектов с открытым исходным кодом, отобранных и оценённых кодом Cloud.
5. Официальное руководство по использованию кода Cloud: https://gitee.com/help.
6. Лица обложки кода Cloud — это раздел, предназначенный для демонстрации стиля членов кода Cloud: https://gitee.com/gitee-stars/.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/tuboyou-requestQ.git
git@api.gitlife.ru:oschina-mirror/tuboyou-requestQ.git
oschina-mirror
tuboyou-requestQ
tuboyou-requestQ
master