测试开发面试题(一)-----pytest相关

1)既然有unittest那么为什么还要用pytest呢?

      这是因为pytest有以下的特点:

  • 入门简单,文档丰富,而且文档中有很多实例参考

  • 支持参数化,可以从教细的力度控制测试用例

  • 能够支持简单的单元测试和复杂的功能测试

  • 支持测试跳过,失败case标记

  • 支持失败重试

  • 支持由nose,unittest编写的测试用例

  • 支持HTML报告

  • 和jenkins持续集成很方便

  • 具有很多第三方插件,并且可以自定义扩展

2)3.编写规则
编写 pytest 测试样例非常简单,只需要按照下面的规则:
 测试文件以 test_开头(以test 结尾也可以)
 测试类以 Test 开头,并且不能带有 init 方法
 测试函数以 test
开头
 断言使用基本的 assert 即可

3)

测试开发面试题(一)-----pytest相关_第1张图片

3)了解@pytest.fixture吗?

2.按模块化的方式实现,每个fixture都可以相互调用;
3.fixture范围从简单的单元测试到复杂的功能测试,可以对fixture配置参数,或者跨函数function,类class,模块module或整个测试session范围。
4.可以和测试函数卸载同一个文件夹里;
5.fixture看做资源,在测试用例执行之前去配置这些资源,执行完后需要去释放资源;
6.fixture提供参数化功能,根据配置和不同组件来选择不同的参数。

fixture源码详解:fixture(scope=‘function’,params=None,autouse=False,ids=None,name=None):
     scope:有4个级别的参数,分别是:function(默认),class,module,session
     ·@pytest.fixture()不写参数,参数就是scope='function',它的作用范围是每个测试用例来之前运行一次,销毁代码在测试用例之后运行;
                                                              ·scope='class',fixture为class级别时,如果一个class里面有多个用例,都调用了fixture,那么此fixture只在此class里所有用例开始前执行一次;
                                                              ·scope='moudle',在当前.py脚本里面所有用例开始之前只执行一次;
                                                              ·scope='session',可以跨.py模块调用,也就是当我们有多个.py文件的用例,如果多个用例只需调用一次fixture,那就可以设置scope='session',并且写到conftest.py文件里。
    params:一个可选的参数列表,它将导致多个参数调用fixture功能和所有测试使用它
    autouse:如果是true,为所有测试激活fixture funct可以看到它;如果为false则显示需要参考来激活fixture
    ids:每个字符串id的列表,每个字符串对应于params,这样他们就是测试ID的一部分;如果没有提供id,他们会从params自动生成
    name:fixture的名称,默认为装饰函数的名称。如果fixture在定义它的同一模块,夹具的功能名称将被请求夹具的功能arg遮蔽,解决这个问题一种方法是将装饰函数命令 fixture_然后使用@pytest.fixture(name='')
 

5)3.conftest.py:共享fixture功能
如在实现测试期间,要使用多个测试文件中的fixture函数,则可以将其移动到conftest.py文件中。 并且,不需要导入要在测试中使用的fixture,它会自动被pytest发现。 fixture功能的发现从测试类开始,然后是测试模块,然后是conftest.py文件,最后是内置和第三方插件。
一个工程下可以建多个conftest.py的文件,一般在工程根目录下设置的conftest文件起到全局作用。在不同子目录下也可以放conftest.py的文件,作用范围只能在改层级以及以下目录生效。
1.conftest在不同的层级间的作用域不一样
2.conftest是不能跨模块调用的
 

6)

测试开发面试题(一)-----pytest相关_第2张图片

7)

测试开发面试题(一)-----pytest相关_第3张图片

8)

测试开发面试题(一)-----pytest相关_第4张图片

9)

测试开发面试题(一)-----pytest相关_第5张图片测试开发面试题(一)-----pytest相关_第6张图片测试开发面试题(一)-----pytest相关_第7张图片

10)

测试开发面试题(一)-----pytest相关_第8张图片

11)

测试开发面试题(一)-----pytest相关_第9张图片


 

你可能感兴趣的:(测试开发)