接口自动化测试面试常见问题

1. 什么是pytest框架?

pytest是Python的第三方测试框架,是基于unittest的扩展框架,它是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:

  • 简单灵活,容易上手
  • 支持参数化
  • 能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)
  • pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等
  • 测试用例的skip和xfail处理
  • 可以很好的和jenkins集成
  • report框架----Allure 也支持了pytest

Tips:

Allure框架是一个灵活的轻量级多语言测试报告工具,它不仅以Web的方式展示了简介的测试结果,而且允许参与开发过程的每个人从日常执行的测试中最大限度的提取有用信息。

2. Python单元测试框架unittest和pytest有什么区别?

参考回答:

pytest可以执行unittest风格的测试用例,无须修改unittest用例的任何代码,有较好的兼容性,pytest插件丰富,比如flask插件,可用于用例出错重跑;还有xdist插件,可用于设备并行执行。    

unittest和pytest的具体区别如下:

1)用例编写规则

unittest提供了test cases、test suites、test fixtures、test runner相关的类,让测试更加明确、方便、可控。使用unittest编写用例,必须遵守以下规则:

  • 测试文件必须先import unittest
  • 测试类必须继承unittest.TestCase
  • 测试方法必须以“test_”开头
  • 测试类必须要有unittest.main()方法

使用pytest编写用例,必须遵守以下规则:

  • 测试文件名必须以“test_”开头或者"_test"结尾(如:test_ab.py)
  • 测试方法必须以“test_”开头
  • 测试类命名以"Test"开头

2)用例前置和后置

unittest提供了setUp/tearDown,只能针对所有用例

pytest提供了模块级、函数级、类级、方法级的setup/teardown,比unittest的setUp/tearDown更灵活。

  • 模块级(setup_module/teardown_module)开始于模块始末,全局的
  • 函数级(setup_function/teardown_function)只对函数用例生效(不在类中)
  • 类级(setup_class/teardown_class)只在类中前后运行一次(在类中)
  • 方法级(setup_method/teardown_method)开始于方法始末(在类中)
  • 类里面的(setup/teardown)运行在调用方法的前后

3)断言

unittest提供了assertEqual、assertIn、assertTrue、assertFalse
pytest直接使用assert 表达式

4)报告

unittest使用HTMLTestRunnerNew库
pytest有pytest-HTML、allure插件

5)失败重跑

unittest无此功能
pytest支持用例执行失败重跑,pytest-rerunfailures插件

6)参数化

unittest需依赖ddt库
pytest直接使用@pytest.mark.parametrize装饰器

7)用例分类执行

unittest默认执行全部用例,也可以通过加载testsuit,执行部分用例 pytest可以通过@pytes

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

<p> 本专刊共五章 21 篇正文及 5 个对应的 GitHub 项目,主要介绍了接口测试基础知识及测试用例设计方法,认证鉴权、加密验签,自动化测试,安全性测试,性能测试等内容,每一章节都有代码实例来剖析其原理,并提供了一个完整电商系统的代码,可以直接实操演练,让你知其然知其所以然,轻松搞定接口测试。加入专刊,你就加入了一大群志同道合的优质测试人圈子,同时还有和作者及作者的朋友们互动交流的机会。 本专刊购买后即可解锁所有章节,故不可以退换哦~ </p> <p> <br /> </p>

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务