前言
今天笔者想和大家唠唠自动化测试技术面试方面的问题,事情是这样子的,笔者有一个朋友是做Python自动化测试的。前几天他告诉我去参加一个大厂面试被刷了。
我问他是有没有总结被刷下来的原因。他说面试官问了一些 pytest 单元测试框架相关的知识,包括什么插件系统和用力筛选。但是他所在的公司用的技术是基于 unittest 的,没有用过 pytest。
我跟他说你可以和技术面试官说明,在实际过程当中你没有使用过 pytest,但是你可以后面再学。这哥们说:我就是这样跟面试官说的,但是面试官告诉我 pytest 现在已经是行业里面的主流,还在坚持用 unittest 说明我的技术已经过时了,没有跟上现在测试领域的发展。
实际上他在面试之前已经了解过 pytest 的一些基础用法,但是网上的一些资料,都是停留在用法和一些知识点的讲解,没有深入到 pytest 内部运行和一些高级特性。所以被问到的时候,自己临时抱佛脚的一些知识都没有用上。
后面我给这位朋友补习了一些关于Python的高级特性。现在我连同基础部分的内容一起贴出来,希望对Python自动化测试的一些朋友有所帮助。
1、为什么用单元测试框架?
首先我要说明一下什么是单元测试框架?
unittest 和 pytest 都是单元测试框架。单元测试指的是在编程过程当中形成的对函数或者是类下面的方法进行测试的一个过程。
在不使用任何框架的前提下,其实也是可以进行单元测试的。比如我们可以通过 if 判断
、异常处理或者是其他的流程控制来表示测试是否通过。
def add(a, b):
return a + b
def test_add():
ret = add(3, 4)
if ret == 7:
print("add 函数的测试通过")
else:
print("add 函数的测试失败")
如果要运行这个用例,需要手工调用 test_add 这个函数:
test_add()
接下来,使用 python 运行这个文件,就能得到测试结果:
python test_add.py
虽然说上面我们通过 if 判断,对一个函数进行了测试,而且得到了测试结果,但是流程是比较复杂的: