paint-brush
学习 Python 中的模块测试英文 路过@terieyenike
3,027 讀數
3,027 讀數

了解 Python 中的单元测试

Teri6m2022/09/04
Read on Terminal Reader
Read this story w/o Javascript

太長; 讀書

测试您的代码是软件开发生命周期的重要组成部分,它应该始终在将应用程序部署到生产之前进行。单元测试是程序员为测试代码库而编写的逻辑程序。测试至关重要,因为它有助于跟踪和发现代码中的错误。本文将教您如何使用 Python 单元测试编写基本测试,以检查您的代码在测试过程中是通过还是失败。单元测试的主要目的是检查所有代码功能是否按预期执行。
featured image - 了解 Python 中的单元测试
Teri HackerNoon profile picture


测试测试英文您的源码是工具开发技术生命安全寿命的根本构成个部分,它该总是在将APP子程序工作部署到加工很久做。测试测试英文至关根本,会因为它不利于关注和出现源码中的有误。


测量测量不是种在将代码是什么怎么用交由产出前面定期检查其他开源代码是什么怎么用摸块尺寸以要确认其本职工作较佳的手段。必须要 目光的是,在摸块尺寸测量测量过后,就不需要为粉丝将源文件名称推进到产出环境中。


假如您还不要忘记测试英文并非是既定于 Python 的,那将是很好的。


从文中将教您该怎样运行 Python 象限检测绘制基本上检测,以检查报告您的编码在检测过程中 中是实现或是挫败。


先决条件

要结束本方法步骤,您需低于相关内容:
  • 编写Python代码的知识
  • 的安装在您的本地机器上
  • 您选择的代码编辑器


入门

编写测试是程序员为测试代码库而编写的逻辑程序。在开发过程中,QA 应该了解流程,在将产品交付给用户之前突出应用程序中需要改进的地方。为此,让我们编写一个将两个数字相加并返回结果的函数。

首先,创建一个文件夹,其中包含用于编写本教程中的测试的所有文件。添加一个名为main.py的文件以在这个新文件夹中编写函数。


 # main.py # Add the sum of two numbers def add_sum(num1, num2): return int(num1) + int(num2)


现在我们有了上面的代码块,让我们通过编写一个允许用户通过输入提示输入所需值的函数来检查代码是否有效。函数add_sum()将两个数字作为参数,并使用运算符+符号返回值以获得总和。在另一个文件result.py中,复制并粘贴以下代码:


 # result.py from main import add_sum print("Please enter the two values\n") num1 = int(input("Please enter the first number: \n")) num2 = int(input("Please enter the second number: \n")) total = add_sum(num1, num2) print(f"The sum of the values is {total}")


此编码块执行力以下的使用:
  • main.py导入add_sum()
  • 使用int方法将输入提示值转换为整数
  • 使用 f 字符串(格式化语法)对打印其总数的值求和以获得输出


什么是单元测试和测试用例?

Python 会有有一个叫做 unittest 的原机准则库接口,它带来了为您的码搭配和电脑运行各种测量的交通工具。摸块各种测量的常见的是观察任何码工作会不按预料连接。


检测用例是利用的單元检测的的标准办法,其系统在检测种类类中可。前者,关于单一單元检测,检测用例在构件编码中是必无法少的。它利用的不同的的断言方法步骤在电脑运行编码后请马上进行检测与申请书内部故障。


通过测试

当页是至于制作一型号測試的。


在创建用于编写add_sum()函数的所有测试用例的测试文件之前,让我们更新main.py 。复制并粘贴以下代码:

 # main.py def add_sum(num1, num2): try: return int(num1) + int(num2) except ValueError as err: return err


代码块使用try/except语句来处理代码中的异常,如果 except 块中存在错误,则会向您发出警报。编程中的这种方法有助于捕获错误并将您指向发生错误的特定行号。


现下,在其名为 test.py 的一模一样列表中使用个试验文档信息。此前文档信息中,黏贴并粘帖下面代码是什么:


 # test.py import unittest from main import add_sum class MainTest(unittest.TestCase): def test_do_stuff(self): result = add_sum(5, 10) self.assertEqual(result, 15) if __name__ == '__main__': unittest.main()


如上面的代码块所示,会发生以下情况:

  • 导入要测试的unittest和函数(来自main.py)
  • Unittest 通过创建一个包含 add_sum() 函数测试的类来工作,该函数在类内部继承了 unittest 给出的内容,即 unittest.TestCase
  • 在 test_do_stuff() 中使用 self 关键字定义一个函数,该函数代表该类的实例
  • 在 test_do_stuff() 测试方法中,声明一个变量并传入两个具有不同值的参数
  • 最后一行使用 unittest 断言方法 assertEqual,它验证您从结果变量传递的参数是否与您期望接收的结果匹配
  • 最后,使用 unittest.main() 运行整个测试文件


当 test.py 自动运行时,请记住以“test_”开始每个方法。 **
**


彷佛您进行测试软件时,那些检修都应用把控台中的 OK 新闻,这代表着它是好的。


 Ran 1 test in 0.000s OK


考试不及格

在联合开发和测式环节中,因该有违败的场景设计。这样子做取决于每项软件都有着xss漏洞和问题。


在同一个文件test.py中,让我们修改代码并粘贴以下内容:


 # test.py import unittest from main import add_sum class MainTest(unittest.TestCase): # other test def test_do_stuff2(self): result = add_sum("hulu", 5) self.assertEqual(result, 5) if __name__ == '__main__': unittest.main()


运转此源代码的结杲有以下已知:


 FAIL: test_do_stuff2 (__main__.MainTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "test.py", line 11, in test_do_stuff3 self.assertEqual(result, 5) AssertionError: ValueError("invalid literal for int() with base 10: 'hulu'") != 5


从上述的输出电压中,行凭借导入内部错误二维码是什么并相对应地修改二维码是什么来完成以内方面:
  • 错误发生在特定的行号上,告诉您检查并解决行号。
  • 接下来是断言错误,它给出了一个值错误,表示字符串 'hulu' 不是有效的文字,知道在 main.py 文件中,这两个值的类型为 int
  • 通过此步骤,您知道要更正什么以使代码运行测试 OK,并传递正确的值以使代码成功。


运行代码

当您构建了更多资料和不相同的传感器,和您还要同時測試測試那些这一些而不会设置选择独立资料时,您可能实用此系统命令同時正常运行那些測試測試。


 python3 -m unittest


此外,要获取有关测试的更多详细信息,请使用带有标志-v (详细)的命令,它会向您显示正常的测试和失败的测试。


 python3 -m unittest -v


可是下列图甲中:


 test_do_stuff (test.MainTest) ... ok test_do_stuff2 (test.MainTest) ... ok ---------------------------------------------------------------------- Ran 2 tests in 0.000s OK


结论

当我们在粉丝安全使用利用源方式刚刚发布公告新功用模块时,单元式測試肯定由直接参与编辑和交由二维码的 QA 和规划设计者实施。要每季度或要每季度实施測試不肯定是当面的打算,还是要建立起对利用源方式的功用模块和错误率的信任度。


文章评述了为些什么自测在开发设计中必不得少,并且 如果的使用标段自测来查验二维码能力并在推进到产出先前做到玩家的标淮国家标准。


学到更多


바카라사이트 바카라사이트 온라인바카라