Попытка реорганизовать какой-то старый ужасный тестовый код и сделать это с помощью Pytest.Тесты выглядят примерно так:
Test/
Tests_a/
test_a_foo.py
test_a_bar.py
test_a_baz.py
Tests_b/
test_b_1.py
test_b_2.py
test_b_3.py
Мы хотим запустить Tests_a и Tests_b по отдельности, поэтому я могу просто вызвать pytest Tests_a и pytest Tests_b.
Нам нужно некоторое значениегенерировать один раз и использовать в большинстве тестов.
common_value1 = "something" + random()
common_value2 = "something2" + random()
...
Сейчас я делаю это, делая каждую из этих переменных своим собственным приспособлением в conftest.py.Итак, у меня есть
@pytest.fixture(scope="session")
def common_value1():
return "something" + random()
Пока это работает, но мне интересно, есть ли лучший способ?У нас много этих общих значений, поэтому раздражает заполнение контеста этими переменными.
`
`
Другая проблема в том, что у меня есть какая-то общая утилитафункции, которые я хочу разбить на корневом уровне тестов.У меня проблема в том, что некоторые из этих утилит требуют этих общих ценностей.Возможно ли для не тестовых функций получить приборы?
Итак, у меня есть util.py
, который имеет что-то вроде:
def do_common_thing(passed_in_value):
print(common_value1 + passed_in_value)
Какой правильный способ получить common_value1?Я попытался также превратить эту функцию в фиксатор и взять common_value1 в качестве параметра, но это не так.Единственный способ заставить его работать, это заставить сами тесты получить common_value1 и передать его в do_common_thing (), но это особенно раздражает, когда таких значений много.