【问题标题】:How to automate a test in python?如何在python中自动化测试?
【发布时间】:2018-02-24 02:06:14
【问题描述】:

我已经使用 python(在学术界)工作了 5 年,但直到上周我才编写测试。两周前我申请了一份工作,雇主让我做一个 python 任务,其中一部分应该是单元测试。 假设我的代码如下所示(我们称之为“add_numbers.py”):

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('x', type=float)
parser.add_argument('y', type=float)

class add_numbers ():
    def __init__ (self, x, y):
        self.x = x
        self.y = y

    def add(self):
        return self.x+self.y

if __name__ == '__main__':
    args = parser.parse_args()
    an = add_numbers(args.x,args.y)
    print('{} + {} = {}'.format(args.x,args.y,an.add()))

并假设测试脚本如下,我们将其命名为“test_add_numbers.py”:

import unittest
from add_numbers import add_numbers

class TddAdd(unittest.TestCase):

    def test_add_two_numbers(self):        
        self.assertEqual(3, add_numbers(1,2).add()) 

if __name__ == '__main__':
    unittest.main()

然后作为运行我写给他的代码的说明,你可以运行测试

python test_add_numbers.py

为了运行主程序,你应该输入

python add_numbers 2 3

但是他在 2-3 天后回来找我,在说他很遗憾拒绝我之后告诉我应该“自动化”测试。他是什么意思?那么我应该将测试集成到主文件中,以便在运行时

python add_numbers 2 3

它首先“自动”运行测试,然后运行主程序本身。

这里的“自动化”测试是什么意思以及如何使上述测试“自动化”?

【问题讨论】:

    标签: python python-3.x unit-testing automated-tests tdd


    【解决方案1】:

    这似乎是一个奇怪的区别。我想请面试官澄清一下。这不会改变他们的招聘决定,但您提出的要求是完全合理的。

    对我来说,自动化测试类似于运行 nosetests,但这与 unittest 并没有太大区别,只是功能更多一些。奇怪的是,python 中的大多数(或许多)测试包都是 unittest 的扩展。

    【讨论】:

    • 感谢您的回答@kdd。我接触的人是招聘经理。她将技术团队的反馈传达给我。我真的不认为她会将一个已经被拒绝的申请人的问题发送给技术团队并要求他们澄清。
    • 啊,有道理。不过尝试一下也无妨,真的!他们能做的最糟糕的事情就是无视你或拒绝。
    猜你喜欢
    • 2011-06-22
    • 2020-12-31
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    相关资源
    最近更新 更多