Python pytest 框架进行自动化测试时,主流程回归用例是用一条 case 好还是多条?

wwasdassss · 2024年01月08日 · 最后由 姜衍 回复于 2024年01月25日 · 6928 次阅读

class Test:
def test_case1():
测试点 1
def test_case2():
测试点 2
def test_case3():
测试点 3
还是 以下这种方法?
class Test:
def test_case1():
测试点 1
测试点 2
测试点 3

共收到 22 条回复 时间 点赞

看你测试点之间有没有依赖,没依赖就分开,有就放一起

其实这个问题,大家都有困扰。这个好不好没有标准的答案,最关键的是取决于领导想要的效果。

同上诉

测试点 1、2、3 是互斥的还是依赖的?如果是互斥的就不能放在一条 case 当中。如果是依赖的也有必要对大 case 进行拆分分层,当然放一起也是可以的。

fengyu 回复

是依赖的,那断言呢? 每条测试点的断言也放在同一个里面吗

Warflor 回复

那如果领导没要求呢那种比较好 还有断言如果用第二种方法,每个测试点后面都放一个断言吗

Mr.Shuo 回复

那断言可以这样写吗?
class Test:
def test_case1():
测试点 1
断言测试点 1
测试点 2
断言测试点 2
测试点 3
断言测试点 3

在使用测试框架(如 PyTest、unittest 等)编写自动化测试用例时,推荐采用多个独立的测试方法(如 test_case1(), test_case2(), test_case3()),分别对应不同的测试点。原因如下:

  1. 可读性与维护性:每个测试方法只关注一个特定的测试点,使得测试逻辑清晰明了,方便阅读和理解。当某个测试点需要修改或排查问题时,不会影响到其他测试点。

  2. 原子性:每个测试方法应当是独立且完整的,即每个测试用例的成功或失败不应依赖于其他测试用例的结果。如果将多个测试点放在一个测试方法中,一旦其中一个测试点失败,可能导致整个测试用例失败,无法准确判断其他测试点是否正常。

  3. 报告粒度:在生成测试报告时,每个测试方法的结果都会单独体现,有利于快速定位问题所在。

  4. 并行执行:很多测试框架支持测试用例的并行执行,如果每个测试点都是独立的方法,那么可以同时进行测试,提高测试效率。

综上所述,建议按照第一个示例的方式组织测试用例代码。

然而,如果你有一些测试点是紧密相关的,或者需要在相同的测试环境下进行多个测试,你可以考虑将这些测试点放在同一个测试用例中。但即使在这种情况下,也建议尽可能将每个测试点分开成独立的测试用例,因为这样可以更好地组织代码,使其更易于阅读和维护。

总的来说,建议每个测试用例只关注一个特定的测试点或功能点。这样可以使你的测试代码更加清晰、可维护和可扩展。

我感觉没有固定的吧,具体 case 上哪种自己做起来和维护舒服就用哪种方式

wwasdassss 回复

一般是:操作->预期结果,断言应该是在每一步操作之后。
对于场景准备类的操作可以仅做一些简单断言,比如 api 请求仅判断状态码,和一些关键业务数据

首次见到第二种写法,我最低也是一个 case 一个点,多接口的就包含在一个 class 内
第二种这样能区分断言吗?

大海 回复

测试点是紧密相连的,基本上下一个测试点依赖上一个用例,那么推荐使用哪种呢?

fengyu 回复

class Test:
def test_case1():
测试点 1
断言测试点 1
测试点 2
断言测试点 2
测试点 3
断言测试点 3 这样可以吗

我们领导要求每一个脚本对应一条手工测试用例,依次进行自动化测试脚本编写并统计自动化覆盖率。

林森 回复

那如果是用例依赖的情况呢?

主要是回归流程长,这种情况怎么写好呀

wwasdassss 回复

接口测试的时候就直接在数据库写数据构造测试场景;
页面的测试,如修改功能, setup 就是增加一条信息,teardown 就是清理测试环境
目前是这样做的

如果是一条流程链的接口用例我建议单脚本 class 多 case,一接口一 case

好办法多谢

林森 回复

但我这条用例是想单独写一条主流程回归用例的,主流程回归用数据库创建的数据是否不太好

wwasdassss 回复

如果是第二种方式的话,不必要每个测试点都做断言。因为这条用例的逻辑是严格规定的, 如果整个用例失败了。说明实际没有根据预期的走,此时就需要去看日志排查了。步骤之间的紧密联系就是一个个的断言。

我是分为两种,1.主流程 测试 2.单元测试

基本是以单点组业务吧

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册