В настоящее время я работаю над некоторыми модульными тестами и тестовыми приборами, используя py.test
У меня есть код, который делает это:
# my py.test file
import pytest
@pytest.fixture
def fixture_1():
f = open("file_one.txt", 'rb')
f_str = f.read()
yield f_str
f.close()
def test_function_1(fixture_1):
assert fixture_1.startswith("some_test_data") # example test
Это все хорошо и отлично работает.
Теперь предположим, что я пишу другую тестовую функцию, которая работает с входными данными, хранящимися в другом файле (скажем, file_two.txt
, и моя функция выглядит следующим образом:
# in same py file as above
def test_function_2(fixture_1):
#some test with data from file_two.txt
assert something_for_fun
В test_function_2
выше я хочу, чтобы fixture_1
выполнял те же операции, что и раньше, но на file_two.txt
вместо file_one.txt
.
EDIT : я также играл с параметризованными приборами , но это вызывает мою функцию test_function_ * столько раз, сколько аргументов для прибора, что не работает, поскольку функции test_functions специфично для ввода из файла.
Я читал о приспособлении request , но не уверен, как его использовать для проверки контекста тестовой функции.
Если кто-нибудь понял, пожалуйста, дайте мне знать. Тем временем я опубликую, как только у меня получится!
РЕДАКТИРОВАТЬ 2: Я также знаю о inspect
и introspect
НО я ищу более чистый способ сделать это, желательно с использованием некоторого pytest
magic ~
Спасибо!