Итак, у меня есть этот код:
import create_account2
import functions as f
#Import create_account2
@pytest.fixture(scope="module", autouse=True)
def create_account():
create = create_account2.hook
return create
@pytest.mark.usertest
class CreateAccountLoginCUpdateDetailsAndVerify
@pytest.mark.parametrize('country', ['US', 'UK', "CA"])
def test_CreateAccountUpdateDetailsAndVerify(self, create_account, country):
##Create account
data = create_account(country)
##Login with account
f.go_to_site(country)
f.user_login(data['Mail'], data['Password'])
assert "buttonLogOut" in f.get_driver().page_source, "No logout button so login failed"
##Get the original object, before updates..
OriginalCustomerObject = f.GetDetails(data)
f.update_details(data)
UpdatedCustomerObject = f.GetDetails(data)
##Compare objects
f.CompareData(OriginalCustomerObject, UpdatedCustomerObject)
##Quit
f.quit()
Так что он создает учетную запись на веб-сайте США / Великобритании / CA с Selenium, получает объект customer из API, обновляет данные клиента ( Адрес, телефон и т. д. c) через Selenium, затем извлеките другой объект клиента и сравните исходные и обновленные объекты клиента, чтобы убедиться, что обновление данных пользователя через сайт действительно работает
Так что все в порядке. Проблема в том, что мне пришлось поместить создание учетной записи, обновление учетной записи и проверку двух объектов в одном тесте. Параметризация функции с помощью страны = [США, Великобритания, Калифорния] кажется хорошей идеей, поскольку мне не нужно дублировать код. Но я не могу использовать прибор? Не похоже, что вы можете параметризовать приборы таким образом?
Так что в идеале создание учетной записи, обновление учетной записи и проверка того, что два объекта различаются, было бы тремя различными тестами? Вопрос только в том, как правильно передать данные. По моему пониманию PyTest для начинающих, это должно быть сделано с приборами, но в этом случае это, похоже, не работает.
Так мне лучше провести три теста? TestUS, TestCA, TestUK?