课前准备
- 看完本章节所有课程内容
- 完成作业,优先回答和作业相关的问题
- 相关问题在评论区回复
上课内容
知识点梳理
链接: 百度网盘 请输入提取码 提取码: 6nnx
相关链接
本章演示代码
https://gitlab.stuq.ceshiren.com/lg/lg10/hogwartslg10
课后调查表
作业
- 课后作业
- 1、补全计算器(加法 除法)的测试用例
- 2、使用参数化完成测试用例的自动生成
- 3、在调用测试方法之前打印【开始计算】,在调用测试方法之后打印【计算结束】
- 注意:
- 使用等价类,边界值,因果图等设计测试用例
- 测试用例中添加断言,验证结果
- 灵活使用 setup(), teardown() , setup_class(), teardown_class()
设计测试用例
加法
除法
问题1:
你写的读取 yaml 的方法 yamlOpera.load_case() 会提前被初始化, allure只能收集到开始执行用例之后的allure 数据信息。
比如:提前创建了fixture ,fixture 中allure.step() 它也不会被加到测试报告中。
问题2: 可以参考贴子,pytest logging 收集日志 ,后面有个学员给出了解决方案。
就是创建一个fixture 函数,设置一下日志路径,每次生成一个动态的时间戳作为文件名。
问题3: 没太理解你的意思,
是想要在setup_class() 之前还要做一些初始化的设置么?
那为什么不直接放在setup_class 里面,或者 放在setup_module() 。
也可以定义 一个fixture ,fixture 会优于setup 先执行。
明白了 第三个我表述的不好 可以定义其他fixture解决 现在想通了 谢谢老师解答
老师 我用 with pytest.raises同时捕获多个异常 报这个错 应该咋解决
用直播课说的异常情况的参数处理又报TypeError: expected exception must be a BaseException type, not str
当有多个异常时,要把这些异常放在元组中,这个用法与 try…except是类似的。例如:
def test_a():
with pytest.raises((ZeroDivisionError,TypeError)) :
1/0
检查一下你的rai_datas的数据。我这边没有问题
@pytest.mark.parametrize("a,b,errortype",[
[1,0,ZeroDivisionError],['a','b',TypeError]
])
def test_b(a,b,errortype):
with pytest.raises(errortype):
a/b
raise ValueError()
同样的数据 我放在yaml里的rai_datas就不行 就报TypeError: expected exception must be a BaseException type, not str 直接放在代码里就可以执行通过了
lagou05/testing_calc at master · daiy96/lagou05 · GitHub 这是我GitHub地址 老师在帮忙看下呢
把 ZeroDivisionError TypeError
这种错误类型放在yaml文件中,它会认为是一个字符串,yaml 文件不支持错误类型,读取出来到python中将会是字符串,
需要使用 eval() 方法转成 对象,再在代码里做判断
pytest.raise(eval('ZeroDivisionError'))