数据驱动就是通过数据的扭转驱动自动化测试的执行,最终引起测试后果的扭转。简略来说,就是参数化在自动化测试中的利用。
测试过程中应用数据驱动的劣势次要体现在以下几点:
1. 进步代码复用率,雷同的测试逻辑只需编写一条测试用例,就能够被多条测试数据复用,进步了测试代码的复用率,同时进步了测试代码的编写效率。
2. 异样排查效率高,测试框架根据测试数据,每条数据生成一条测试用例,用例执行过程互相隔离。如果其中一条失败,不会影响其余的测试用例。
3. 代码可维护性高,清晰的测试框架利于其余测试工程师浏览,进步代码的可维护性。
数据量小的测试用例能够应用代码的参数化来实现数据驱动,数据量大的状况下倡议大家应用一种结构化的文件(例如 YAML,JSON 等)来对数据进行存储,而后在测试用例中读取这些数据。
Pytest 提供了 @pytest.mark.parametrize 装璜器来进行参数化,能够应用参数化来实现数据驱动。代码如下:
下面的代码首先应用 @pytest.mark.parametrize 装璜器,传递了两组数据,测试结果显示有两条测试用例被执行,而不是一条测试用例。也就是 Pytest 会将两组测试数据主动生成两个对应的测试用例并执行,生成两条测试后果。
当测试数据量大的状况下,能够思考把数据存储在结构化的文件中。从文件中读取出代码中所须要格局的数据,传递到测试方法中执行。这里举荐大家应用 YAML 类型的文件来存储测试数据。YAML 应用动静字段进行结构化,它以数据为核心,比 Excel、CSV、JSON、XML 等更适宜做数据驱动。
上面,咱们将下面参数化的两组数据存储到 YAML 文件中,创立一个 data/searchdata.yml 文件,代码如下:
下面的代码定义了一个 yaml 格局的数据文件 searchdata.yml,文件中定义了一个列表,列表中有两组数据,最初生成的是这样的数据格式:[[“alibaba”, “BABA”, 200],[“JD”, “JD”, 20]]。
下一步将测试用例中参数化的数据革新成从 searchdata.yml 文件中读取,代码如下:
下面的代码,只须要应用 yaml.safe_load() 办法,就来读取 searchdata.yml 文件中的数据,别离传入到用例 test_search() 办法中实现数据的输出与后果的验证。而如果应用 Excel、CSV 文件格式进行数据的存储,须要先从 Excel 文件中读取数据,再解析成须要的格局。而应用 YAML 则齐全省去了这个过程。
以上,对于其余环节的数据驱动,在后续章节分享。
【