什么是单元测试? 单元测试是软件测试的第一级,测试软件中最小的可测试部分。这用于验证软件的每个单元是否按设计执行。 unittest测试框架是python的 单元测试 风格框架。
方法: 单元测试采用白盒测试法。
unittest框架支持的OOP概念:
- 测试夹具: 测试夹具用作运行测试的基线,以确保有一个固定的环境来运行测试,从而使结果可重复。 例如:
- 创建临时数据库。
- 启动服务器进程。
- 测试用例: 测试用例是一组用于确定被测试系统是否正常工作的条件。
- 测试套件: 测试套件是一组测试用例,用于测试软件程序,通过一起执行聚合测试来显示它具有一组特定的行为。
- 测试跑步者: 测试运行程序是设置测试执行并向用户提供结果的组件。
基本测试结构: unittest通过以下两种方式定义测试:
- 使用代码管理测试“夹具”。
- 自我测试。
import unittest class SimpleTest(unittest.TestCase): # Returns True or False. def test( self ): self .assertTrue( True ) if __name__ = = '__main__' : unittest.main() |
这是使用unittest框架的基本测试代码,它有一个单独的测试。如果TRUE为FALSE,则此test()方法将失败。
运行测试
if __name__ == '__main__': unittest.main()
最后一个块通过命令行运行文件来帮助运行测试。
. ---------------------------------------------------------------------- Ran 1 test in 0.000s OK
这里,在输出中的“.”在输出的第一行上,表示测试通过。 在运行测试时,命令行中添加了“-v”选项,以获得更详细的测试结果。
test (__main__.SimpleTest) ... ok ---------------------------------------------------------------------- Ran 1 test in 0.000s OK
可能的结果: 有三种可能的测试结果:
- 好——这意味着所有测试都通过了。
- 失败–这意味着测试没有通过,并引发了AssertionError异常。
- 错误–这意味着测试引发的异常不是AssertionError。
让我们通过一个示例来了解unittest框架的实现。
实施:
# Python code to demonstrate working of unittest import unittest class TestStringMethods(unittest.TestCase): def setUp( self ): pass # Returns True if the string contains 4 a. def test_strings_a( self ): self .assertEqual( 'a' * 4 , 'aaaa' ) # Returns True if the string is in upper case. def test_upper( self ): self .assertEqual( 'foo' .upper(), 'FOO' ) # Returns TRUE if the string is in uppercase # else returns False. def test_isupper( self ): self .assertTrue( 'FOO' .isupper()) self .assertFalse( 'Foo' .isupper()) # Returns true if the string is stripped and # matches the given output. def test_strip( self ): s = 'geeksforgeeks' self .assertEqual(s.strip( 'geek' ), 'sforgeeks' ) # Returns true if the string splits and matches # the given output. def test_split( self ): s = 'hello world' self .assertEqual(s.split(), [ 'hello' , 'world' ]) with self .assertRaises(TypeError): s.split( 2 ) if __name__ = = '__main__' : unittest.main() |
上面的代码是测试5个字符串方法的简短脚本。 单元测试。测试用例 用于通过子类化创建测试用例。底部的最后一段代码允许我们通过运行文件来运行所有测试。
准则中使用的基本术语:
- assertEqual() 此语句用于检查获得的结果是否等于预期结果。
- assertTrue()/assertFalse() 此语句用于验证给定语句是否正确。
- assertRaises() 此语句用于引发特定的异常。
测试说明:
- 测试字符串 此测试用于测试字符串的属性,其中一个字符(如“a”)乘以一个数字(如“x”),输出为x乘以“a”。在这种情况下,如果结果与给定的输出匹配,assertEqual()语句将返回true。
- 测试 此测试用于检查给定字符串是否转换为大写。如果返回的字符串为大写,则assertEqual()语句将返回true。
- 测试 此测试用于测试字符串的属性,如果字符串为大写,则返回TRUE,否则返回False。assertTrue()/assertFalse()语句用于此验证。
- 测试条 此测试用于检查函数中传递的所有字符是否已从字符串中剥离。如果字符串被剥离并与给定的输出匹配,则assertEqual()语句返回true。
- 测试_分割 此测试用于检查字符串的split函数,该函数通过函数中传递的参数拆分字符串,并将结果作为列表返回。在这种情况下,如果结果与给定的输出匹配,assertEqual()语句将返回true。
单元测试。main() 为测试脚本提供命令行界面。从命令行运行上述脚本时,将生成以下输出:
..... ---------------------------------------------------------------------- Ran 5 tests in 0.000s OK
本文由 阿迪蒂·古普塔 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。