首页 > 编程知识 正文

python 测试题,python 测试框架

时间:2023-05-05 09:30:23 阅读:269700 作者:71

通过测试可确定代码面对各种输入都能按要求的那样工作。Python提供了unittest模块中的工具来测试代码。

1. 测试函数: 单元测试和测试用例:

   unittest模块提供了代码测试工具。

单元测试用于核实函数的某个方面没有问题;测试用例是一组单元测试,这些单元测试一起核实函数在各种情形下的行为都符合要求。

良好的测试考虑到了函数可能接收到的各种输入,包含针对所有这些情形的测试。

全覆盖测试用例则包含一整套单元测试,涵盖了各种可能的函数使用方式。

可通过的测试:

测试用例创建后,再添加针对函数的单元测试就很简单了。

为函数编写测试用例,先导入unittest模块以及要测试的函数,再创建一个继承unittest.TestCase的类,并编写一系列方法对函数行为的不同方面进行测试。

不能通过的测试:

修改下函数:

运行单元测试后:


测试输出中:

E(error)指出测试用例中有一个单元测试导致了错误。

根据标准的traceback,它指出了具体哪行有问题及出现问题的原因。

测试未通过时如何解决:

如果检查的条件没错,测试通过了意味着函数的行为是对的,而测试未通过意味着编写的新代码有错。

测试未通过时,不要修改测试,而应修复导致测试不能通过的代码:检查刚对函数所做的修改,找到导致函数行为不符合预期的修改。

例如上面的错误,只需要将函数修改为如下再运行测试:

将middle参数设置为可选的,将形参移动到形参列表末尾,并将其默认值指定为一个空字符串。

2.测试类: 各种断言方法:

unittest.TestCase类中提供了大量的断言方法。

断言方法检查我们认为应该满足的条件是否满足条件。如果确实满足,则对假设得到了确认。如果实际上并不满足,则Python引发异常。

unittest Module中的断言方法 assertEqual(a,b)核实a==bassertNotEqual(a,b)核实a!=bassertTrue(x)核实x为TrueassertFalse(x)核实x为FlaseassertIn(item,list)核实item在list中assertNotIn(item,list)核实item不再list中

 

上面的断言方法,可以核实返回的值是否等于预期的值、返回的值为True/False、返回的值是否在列表中。只能在继承unittest.TestCase的类中使用这些方法。

测试用例类:

  unittest.TestCase#setUp()方法:

上面的代码中,每个测试方法都需要创建一个AnnoymousSurvey类实例。

unittest.TestCase#setUp()方法允许我们只需要创建这些对象一次,并在每个测试方法中使用他们。

如果在TestCase类中包含了setUp()方法,Python将先运行它,再运行各个以test_开头的方法。这样,在编写每个测试方法中都可使用方法setUp()中创建对象了。

setUp()方法存储的东西的变量名包含前缀self(即存储在属性中),因此可在这个类的任何地方使用。可在setUp()方法中创建一系列实例并设置他们的属性,再在测试方法中直接使用这些实例。相比于子在每个测试方法中都创建实例并设置属性,着要容易的多。

图中的setUp()做了2件事情:创建一个对象、创建一个答案列表。

存储这2样东西的变量名包含前缀self(即存储在属性中),因此我们可以在这个类的任何地方使用。

 

 

 

 

 

 

 

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。