我有一个关于获取自动化测试的测试数据的问题,这是我的问题: 我需要为服装店准备自动化测试脚本。 我需要知道获取以下场景所需的测试数据的最佳实践是什么:
场景描述:检查用户是否可以正确地将产品添加到购物篮中。
鉴于我在“女士服装”页面上
当我将“XXX”产品添加到包中时
然后我可以在购物篮中看到“XXX”产品
我的问题是:如何确保“XXX”产品始终可用,以及最佳做法是什么? 我是否必须始终连接到env数据库并检查“XXX”产品是否可用,如果没有,则将其插入数据库?
或者也许应该修改一点BDD场景并在“女士连衣裙”页面上获取当前可用产品的列表,选择任何产品,将其添加到包中并检查它是否正确添加到购物篮中? (但是在这种情况下,如果没有可用于测试环境的产品该怎么办?)
我希望进行高效且强大的自动化测试。
答案 0 :(得分:1)
有几种选择。一些开发人员和我研究了一个类似于汽车市场的问题。我们实际上发现“脏”的方式对我们来说是最好的方式。
我们只是进行了一次BeforeFeature数据库查询,并获取了测试环境中可用的所有品牌。我们将这些品牌添加到FeatureContext和ScenarioContext,具体取决于所需的上下文。由于Feature / Scenario上下文,您可以在该特定功能/方案的运行期间使用这些值。在“何时”步骤中,在代码中,我们创建了数据库中所有可用品牌的列表。
然后,我们通过specflow将每个品牌传递给代码,并检查列表是否包含该品牌。如果列表确实包含该品牌,则必须在该品牌上进行点击,如果我们登陆该品牌的页面,我们会在最后一步检查。
你可以做一些类似连衣裙的事情。
所以我们的specflow看起来有点像:
Scenario Outline: Check available brands till vehicle detail page
Given I navigate to Vehichle Search Page
When I search '<Brand>', if available in test environment
Then I am navigated to the vehicle detail page
Examples:
|Brand|
|Audi |
|BMW |
|etc |
只是一个补充: 这种编写测试方式可以使您的测试非常BDD。企业可以阅读您正在测试的内容。此外,只要数据模型保持原样,您的测试就非常易于维护。您可以在桌面上添加无限量的连衣裙,只有品牌可用时才能获得测试结果。因此,如果数据库被刷干净,当然,不会执行单个测试,但您不会得到任何误报或不必要的否定。
此外,如果首先找不到品牌,您可以选择将品牌添加到数据库中。您可以在“When”步骤中执行此操作。如果在列表中找不到连衣裙,则可以在此时在数据库中添加查询。
答案 1 :(得分:1)
在您的情况下,您必须添加一个前提条件:
GIVEN:XXX产品可在&#34; WOMEN&#39; S DRESSES&#34;页。强>
如果产品不可用 - 它是另一个测试用例)
使用最合适的方式在测试之前创建XXX产品:
或只是模拟对XXX产品的API响应