Unittest
В мы используемskip()
метод;Pytest
Как использовать его в?Pytest
Есть также два способа пропустить варианты использования.skip、skipif
。# -*- coding:utf-8 -*-
# Автор: Ноама Нельсон
# Дата: 17.11.2022
# Имя файла: test_unittest_skip.py
# Функция: проверка пропуска unittest.
# Контактное лицо: VX (Ноама Нельсон)
# Блог: https://blog.csdn.net/NoamaNelson
import unittest
class TestCase(unittest.TestCase):
def test_1(self):
print("Сценарий использования 1")
def test_2(self):
print("Сценарий использования 2")
@unittest.skip("Этот вариант использования не выполняется и бесполезен")
def test_3(self):
print("Сценарий использования 3")
if __name__ == '__main__':
unittest.main()
======================== 2 passed, 1 skipped in 0.05s =========================
Процесс завершен, код выхода 0
PASSED [ 33%] Вариант использования 1
PASSED [ 66%] Вариант использования 2
SKIPPED (Этот вариант использования не выполняется и бесполезен) [100%]
Skipped: Этот вариант использования не выполняется и бесполезен
pytest.mark.skip
Вы можете пометить тестовые функции, которые не могут быть выполнены или которые вы хотите завершить неудачно;reason
:Это пропущенопричина,Будет напечатан в результате выполнения;# -*- coding:utf-8 -*-
# Автор: Ноама Нельсон
# Дата: 17.11.2022
# Имя файла: test_pytest_skip.py
# Функция: проверьте функцию пропуска pytest.
# Контактное лицо: VX (Ноама Нельсон)
# Блог: https://blog.csdn.net/NoamaNelson
import pytest
@pytest.fixture(scope="module")
def start():
print("Откройте браузер и введите имя пользователя и пароль для входа")
# yield
# print("Закрыть браузер")
def test_1(start):
print("Сценарий использования 1...")
def test_2(start):
print("Сценарий использования 2...")
@pytest.mark.skip(reason="Сценарий использования 3 не требуется выполнять")
def test_3(start):
print("Сценарий использования 3...")
class TestA():
def test_4(self):
print("Сценарий использования 4...")
@pytest.mark.skip(reason="Сценарий использования 5 не требуется выполнять")
def test_5(self):
print("Сценарий использования 5...")
@pytest.mark.skip(reason="Сценарии использования в этом классе не обязательно выполнять")
class TestB():
def test_6(self):
print("Сценарий использования 6...")
if __name__ == '__main__':
pytest.main(["-s", "test_pytest_skip.py"])
test_pytest_skip.py::test_1 Откройте браузер и введите имя пользователя и пароль для входа.
PASSED [ 16%] Вариант использования 1...
test_pytest_skip.py::test_2 PASSED [ 33%] Вариант использования 2…
test_pytest_skip.py::test_3 SKIPPED (Сценарий использования 3 не требуется выполнять) [ 50%]
Skipped: Вариант использования 3 не требуется выполнять
test_pytest_skip.py::TestA::test_4 PASSED [ 66%] Вариант использования 4…
test_pytest_skip.py::TestA::test_5 SKIPPED (Сценарий использования 5 не требуется выполнять) [ 83%]
Skipped: Вариант использования 5 не требуется выполнять
test_pytest_skip.py::TestB::test_6 SKIPPED (Сценарии использования в этом классе не обязательно выполнять) [100%]
Skipped: Варианты использования этого класса не требуют выполнения.
======================== 3 passed, 3 skipped in 0.04s =========================
pytest.skip()
отличается отpytest.mark.skip
,pytest.mark.skip
применяется ко всему тестовому примеру;pytest.skip()
Во время выполнения тестового примера он вынужден пропустить и больше не выполнять оставшийся контент.;Python
серединаbreak Выход из цикла аналогичен следующему:# -*- coding:utf-8 -*-
# Автор: Ноама Нельсон
# Дата: 17.11.2022
# Имя файла: test_pytest_skip1.py
# Функция: проверьте функцию Skip() функции pytest.
# Контактное лицо: VX (Ноама Нельсон)
# Блог: https://blog.csdn.net/NoamaNelson
import pytest
import time
@pytest.fixture()
def start():
print("Откройте браузер и введите имя пользователя и пароль для входа")
yield
print("Закрыть браузер")
def test_1(start):
print("Сценарий использования 1...")
i = 1
while True:
print(time.time())
i += 1
if i == 6:
pytest.skip("После пятикратной печати времени в шестой раз оно больше не будет печататься~")
if __name__ == '__main__':
pytest.main(["-s", "test_pytest_skip1.py"])
test_pytest_skip1.py::test_1 Откройте браузер и введите имя пользователя и пароль для входа.
SKIPPED (После печати времени 5 раз оно больше не будет печататься в шестой раз~) [100%]Сценарий использования 1...
1668677189.0525532
1668677189.0525532
1668677189.0525532
1668677189.0525532
1668677189.0525532
Skipped: После печати времени 5 раз оно не будет печататься в шестой раз~
Закрыть браузер
============================= 1 skipped in 0.02s ==============================
pytest.skip(msg="",allow_module_level=True )
час,Настройка пропуска целых модулей на уровне модуля,следующее:# -*- coding:utf-8 -*-
# Автор: Ноама Нельсон
# Дата: 17.11.2022
# Имя файла: test_pytest_skip2.py
# Функция: проверьте функцию Skip() параметрallow_module_level=True pytest.
# Контактное лицо: VX (Ноама Нельсон)
# Блог: https://blog.csdn.net/NoamaNelson
import pytest
import time
import sys
if sys.platform.startswith("win"):
pytest.skip("Пропустить вариант использования платформы Windows", allow_module_level=True)
@pytest.fixture()
def start():
print("Откройте браузер и введите имя пользователя и пароль для входа")
yield
print("Закрыть браузер")
def test_1(start):
print("Сценарий использования 1...")
i = 1
while True:
print(time.time())
i += 1
if i == 6:
pytest.skip("После пятикратной печати времени в шестой раз оно больше не будет печататься~")
if __name__ == '__main__':
pytest.main(["-s", "test_pytest_skip2.py"])
collected 0 items / 1 skipped
============================= 1 skipped in 0.02s ==============================
pytest.mark.skipif(condition, reason="")
;condition
нужно вернутьсяTrue
пропущу。# -*- coding:utf-8 -*-
# Автор: Ноама Нельсон
# Дата: 17.11.2022
# Имя файла: test_pytest_skipif.py
# Функция: проверьте функцию Skipif() в pytest.
# Контактное лицо: VX (Ноама Нельсон)
# Блог: https://blog.csdn.net/NoamaNelson
import pytest
import time
import sys
@pytest.mark.skipif(sys.platform == "win32", Reason="Не реализовано на платформе Windows")
class TestA():
@pytest.fixture()
def start(self):
print("Откройте браузер и введите имя пользователя и пароль для входа")
yield
print("Закрыть браузер")
def test_1(self, start):
print("Сценарий использования 1...")
i = 1
while True:
print(time.time())
i += 1
if i == 6:
pytest.skip("После пятикратной печати времени в шестой раз оно больше не будет печататься~")
if __name__ == '__main__':
pytest.main(["-s", "test_pytest_skipif.py"])
test_pytest_skipif.py::TestA::test_1 SKIPPED (Не реализовано на платформе Windows) [100%]
Skipped: Платформа Windows не выполняется
============================= 1 skipped in 0.02s ==============================
pytest.mark.skip
и pytest.mark.skipif
Присвоить переменной тега;# -*- coding:utf-8 -*-
# Автор: Ноама Нельсон
# Дата: 17.11.2022
# Имя файла: test_pytest_skipif1.py
# Функция: проверьте функцию Skipif() в pytest.
# Контактное лицо: VX (Ноама Нельсон)
# Блог: https://blog.csdn.net/NoamaNelson
import pytest
import time
import sys
mark1 = pytest.mark.skipif(sys.platform == "win32", Reason="Не реализовано на платформе Windows")
mark2 = pytest.mark.skip("Нет необходимости выполнять этот вариант использования")
@mark1
class TestA():
@pytest.fixture()
def start(self):
print("Откройте браузер и введите имя пользователя и пароль для входа")
yield
print("Закрыть браузер")
def test_1(self, start):
print("test case 1 ......")
@mark2
def test_2(self, start):
print("test case 2 ......")
if __name__ == '__main__':
pytest.main(["-s", "test_pytest_skipif1.py"])
test_pytest_skipif1.py::TestA::test_1 SKIPPED (Не реализовано на платформе Windows) [ 50%]
Skipped: Платформа Windows не выполняется
test_pytest_skipif1.py::test_2 SKIPPED (Нет необходимости выполнять этот вариант использования) [100%]
Skipped: Нет необходимости выполнять этот вариант использования
============================= 2 skipped in 0.02s ==============================
( modname: str, minversion: Optional[str] = None, reason: Optional[str] = None )
;параметр | иллюстрировать |
---|---|
| имя модуля |
| номер версии |
| причина |
pip list
Вниз,Давайте попробуем найти существующую версию пакета:attrs
,Версиядля20.3.0
,кодследующее:# -*- coding:utf-8 -*-
# Автор: Ноама Нельсон
# Дата: 17.11.2022
# Имя файла: test_pytest_importskip.py
# Функция: проверьте функцию importskip в pytest.
# Контактное лицо: VX (Ноама Нельсон)
# Блог: https://blog.csdn.net/NoamaNelson
import pytest
import amqp
attrs = pytest.importorskip("attrs", minversion="20.3.0")
@attrs
def test_1():
print("======Модуль не существует")
def test_2():
print("======Модуль существует")
if __name__ == '__main__':
pytest.main(["-s", "test_pytest_importskip.py"])
Skipped: could not import 'attrs': No module named 'attrs'
collected 0 items / 1 skipped
============================= 1 skipped in 0.05s ==============================
sys
,Версиядля1.1.1
,представлять После пакета,показыватьследующее:# -*- coding:utf-8 -*-
# Автор: Ноама Нельсон
# Дата: 17.11.2022
# Имя файла: test_pytest_importskip1.py
# Функция: проверьте функцию importskip в pytest.
# Контактное лицо: VX (Ноама Нельсон)
# Блог: https://blog.csdn.net/NoamaNelson
import pytest
import sys
sys1 = pytest.importorskip("sys", minversion="1.1.1")
@sys1
def test_1():
print(sys.platform)
print("======Модуль существует")
if __name__ == '__main__':
pytest.main(["-s", "test_pytest_importskip1.py"])
Skipped: module 'sys' has __version__ None, required is: '1.1.1'
collected 0 items / 1 skipped
============================= 1 skipped in 0.03s ==============================