Подводя итог, можно сказать, что на самом деле речь идет о повышении эффективности и качества.
Функции | иллюстрировать |
---|---|
сетка | Многоузловое соединение и совместное использование ресурсов |
Распределение | Совместная работа, балансировка нагрузки, масштабируемость и высокая доступность в разных регионах и на компьютерах. |
открытость | Портативность, совместимость, масштабируемость, доступность |
в реальном времени | Вся информация должна быть в режиме реального времени |
Динамический | Динамическое отображение объектов и действий процесса тестирования |
Работа с неопределенностью | иметь Работа с неопределенностьюспособность |
Отказоустойчивость и безопасность | Высокая отказоустойчивость, высокая надежность и хорошая безопасность. |
Технические моменты | Требовать |
---|---|
Распределенная среда | Получите глобальный статус и легко отслеживайте и управляйте процессом тестирования централизованной распределенной стратегии; |
Узел связи в Распределенной среде | Стабильная коммуникационная среда, подходящая для реализации на основе обмена сообщениями. |
Планирование тестовых заданий | Статическое планирование, динамическое планирование и гибридное планирование. |
pytest-xdist
Давайте автоматизироватьтествариант использованияраспределенныйосуществлять,Экономьте время тестирования,Параллелизм на уровне процесса;pip3 install pytest-xdist
C:\Users\Administrator>pip3 install pytest-xdist
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: pytest-xdist in d:\python37\lib\site-packages (1.31.0)
Requirement already satisfied: six in d:\python37\lib\site-packages (from pytest-xdist) (1.15.0)
Requirement already satisfied: execnet>=1.1 in d:\python37\lib\site-packages (from pytest-xdist) (1.8.0)
Requirement already satisfied: pytest>=4.4.0 in d:\python37\lib\site-packages (from pytest-xdist) (6.2.4)
Requirement already satisfied: pytest-forked in d:\python37\lib\site-packages (from pytest-xdist) (1.1.3)
Requirement already satisfied: apipkg>=1.4 in d:\python37\lib\site-packages (from execnet>=1.1->pytest-xdist) (1.5)
Requirement already satisfied: toml in d:\python37\lib\site-packages (from pytest>=4.4.0->pytest-xdist) (0.10.2)
Requirement already satisfied: attrs>=19.2.0 in d:\python37\lib\site-packages (from pytest>=4.4.0->pytest-xdist) (20.3.0)
Requirement already satisfied: colorama in d:\python37\lib\site-packages (from pytest>=4.4.0->pytest-xdist) (0.4.4)
Requirement already satisfied: atomicwrites>=1.0 in d:\python37\lib\site-packages (from pytest>=4.4.0->pytest-xdist) (1.4.0)
Requirement already satisfied: pluggy<1.0.0a1,>=0.12 in d:\python37\lib\site-packages (from pytest>=4.4.0->pytest-xdist) (0.13.1)
Requirement already satisfied: py>=1.8.2 in d:\python37\lib\site-packages (from pytest>=4.4.0->pytest-xdist) (1.10.0)
Requirement already satisfied: importlib-metadata>=0.12 in d:\python37\lib\site-packages (from pytest>=4.4.0->pytest-xdist) (2.1.1)
Requirement already satisfied: packaging in d:\python37\lib\site-packages (from pytest>=4.4.0->pytest-xdist) (20.8)
Requirement already satisfied: iniconfig in d:\python37\lib\site-packages (from pytest>=4.4.0->pytest-xdist) (1.1.1)
Requirement already satisfied: zipp>=0.5 in d:\python37\lib\site-packages (from importlib-metadata>=0.12->pytest>=4.4.0->pytest-xdist) (1.2.0)
Requirement already satisfied: pyparsing>=2.0.2 in d:\python37\lib\site-packages (from packaging->pytest>=4.4.0->pytest-xdist) (2.4.7)
# -*- coding:utf-8 -*-
# автор:Насекомые без границ
# Дата: 16 марта 2023 г.
# Имя файла: test_xdist.py
# Функция: pytest-xdistраспределенный тест
# Контактное лицо: VX (Ноама Нельсон)
# Блог: https://blog.csdn.net/NoamaNelson
import pytest
import time
class TestCase01():
def test_case_01(self):
time.sleep(1)
print("case01$$$$$$$$$$$$$$$$$$$$$")
def test_case_02(self):
time.sleep(1)
print("case02$$$$$$$$$$$$$$$$$$$$$")
def test_case_03(self):
time.sleep(1)
print("case03$$$$$$$$$$$$$$$$$$$$$")
def test_case_04(self):
time.sleep(1)
print("case04$$$$$$$$$$$$$$$$$$$$$")
def test_case_05(self):
time.sleep(1)
print("case05$$$$$$$$$$$$$$$$$$$$$")
def test_case_06(self):
time.sleep(1)
print("case06$$$$$$$$$$$$$$$$$$$$$")
class TestCase02():
def test_case_07(self):
time.sleep(1)
print("case07$$$$$$$$$$$$$$$$$$$$$")
def test_case_08(self):
time.sleep(1)
print("case08$$$$$$$$$$$$$$$$$$$$$")
def test_case_09(self):
time.sleep(1)
print("case08$$$$$$$$$$$$$$$$$$$$$")
if __name__ == '__main__':
pytest.main(["-s", "test_xdist.py"])
test_xdist.py::TestCase01::test_case_01
test_xdist.py::TestCase01::test_case_02
test_xdist.py::TestCase01::test_case_03
test_xdist.py::TestCase01::test_case_04
test_xdist.py::TestCase01::test_case_05
test_xdist.py::TestCase01::test_case_06
test_xdist.py::TestCase02::test_case_07 PASSED [ 11%]case01$$$$$$$$$$$$$$$$$$$$$
PASSED [ 22%]case02$$$$$$$$$$$$$$$$$$$$$
PASSED [ 33%]case03$$$$$$$$$$$$$$$$$$$$$
PASSED [ 44%]case04$$$$$$$$$$$$$$$$$$$$$
PASSED [ 55%]case05$$$$$$$$$$$$$$$$$$$$$
PASSED [ 66%]case06$$$$$$$$$$$$$$$$$$$$$
PASSED [ 77%]case07$$$$$$$$$$$$$$$$$$$$$
test_xdist.py::TestCase02::test_case_08 PASSED [ 88%]case08$$$$$$$$$$$$$$$$$$$$$
test_xdist.py::TestCase02::test_case_09 PASSED [100%]case08$$$$$$$$$$$$$$$$$$$$$
============================== 9 passed in 9.14s ==============================
pytest -s -n auto test_xdist.py
(venv) F:\pytest_study\test_case\test_j>pytest -s -n auto test_xdist.py
============================================ test session starts =============================================
platform win32 -- Python 3.7.0, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
rootdir: F:\pytest_study, configfile: pytest.ini
plugins: allure-pytest-2.8.12, assume-2.4.3, cov-2.8.1, forked-1.1.3, html-2.0.1, metadata-1.8.0, ordering-0.6,
repeat-0.9.1, rerunfailures-10.3, xdist-1.31.0
gw0 [9] / gw1 [9] / gw2 [9] / gw3 [9] / gw4 [9] / gw5 [9] / gw6 [9] / gw7 [9]
.........
============================================= 9 passed in 4.51s ==============================================
-n auto
:Может автоматически обнаруживать системуCPU
Количество ядер;auto
воспользовался всемCPU
Давайте рассмотрим вариант использования;CPU
Давайте рассмотрим вариант использования:# x — количество процессоров
pytest -s -n x
CPU
Давайте рассмотрим вариант использования Продолжительность6.27s:(venv) F:\pytest_study\test_case\test_j>pytest -s -n 2 test_xdist.py
============================================ test session starts =============================================
platform win32 -- Python 3.7.0, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
rootdir: F:\pytest_study, configfile: pytest.ini
plugins: allure-pytest-2.8.12, assume-2.4.3, cov-2.8.1, forked-1.1.3, html-2.0.1, metadata-1.8.0, ordering-0.6,
repeat-0.9.1, rerunfailures-10.3, xdist-1.31.0
gw0 [9] / gw1 [9]
.........
============================================= 9 passed in 6.27s ==============================================
pytest -s -n auto --html=report.html --self-contained-html
pytest -s -n auto test_xdist.py --html=report.thml --self-contained-htm
l
gw0 [9] / gw1 [9] / gw2 [9] / gw3 [9] / gw4 [9] / gw5 [9] / gw6 [9] / gw7 [9]
.........
------------------ generated html file: file://F:\pytest_study\test_case\test_j\report.thml ------------------
============================================= 9 passed in 4.68s ==============================================
pytest-xdist
осуществлять По умолчанию не требуется;--dist
параметр для управления последовательностью;параметр | иллюстрировать |
---|---|
| тот же модуль |
| Группа с одинаковым именем файла |
pytest-xdist
Не существует встроенной поддержки, обеспечивающей использование только фикстур в области сеанса.осуществлятьодин раз;FileLock
Метод генерируется только один разfixture
данные:import pytest
from filelock import FileLock
@pytest.fixture(scope="session")
def login():
print("====Логин===")
with FileLock("session.lock"):
name = "zhang"
password= "123456"
# web автоматизация пользовательского интерфейса
# Объявить драйвер и вернуться
# Автоматизация интерфейса
# Инициирование запроса на вход и возврат токена можно записать так
yield name, password
печать("====Выход====")