【问题标题】:How to write test cases for assignment如何为作业编写测试用例
【发布时间】:2012-04-04 09:36:30
【问题描述】:

我的部分任务是为每个函数创建测试。这有点长,但我很困惑。我在这个函数下面放了一个链接,这样你就可以看到它的样子
第一个代码非常长,因为。

def load_profiles(profiles_file, person_to_friends, person_to_networks):
    '''(file, dict of {str : list of strs}, dict of {str : list of strs}) -> NoneType
    Update person to friends and person to networks dictionaries to include
    the data in open file.'''

    # for updating person_to_friends dict
    update_p_to_f(profiles_file, person_to_friends)
    update_p_to_n(profiles_file, person_to_networks)

下面是整个代码:http://shrib.com/8EF4E8Z3,我通过 mainblock 对其进行了测试,它可以工作。 这是我们提供的用于转换它们的文本文件(profiles_file): http://shrib.com/zI61fmNP

我如何通过鼻子运行测试用例,有什么样的测试结果?还是我不够具体?

进口鼻子 导入 a3_functions

def test_load_profiles_

如果 name == 'ma​​in': 鼻子.runmodule() 我走了那么远,然后我不知道我可以测试什么功能。

【问题讨论】:

  • 是的,你不够具体。测试用例是可以输入程序的数据示例,您必须查看输出是否正确并且程序没有失败。要运行测试用例,您可以简单地创建一些文件,例如 profiles_file 并使用它们运行您的程序。看看它是否有效。用不同的数据制作不同类型的文件,看看它们是否都有效。当我们对数据一无所知时,很难看出您应该运行哪些测试用例。
  • 哦,因为有太多的数据,我无法在这里全部复制。除非我真的和他们一对一地详细讨论。人们不会费心阅读它。所以测试这些类型的数据你必须创建你自己的文本?
  • 是的,创建您自己的文件,或者您的程序接受的任何输入。尝试并使用几乎所有你能想到的不同类型的东西,看看你的程序是否适用于所有情况。
  • 合理的最小测试用例数量是多少,因为我不知道显而易见的测试用例。我认为 1 还不够,但我认为我不需要 7 或 8。
  • 等等,如果我创建自己的文本,那么我该如何编写代码。 import nose import a3_functions #我的函数def所在的文件名 def test_load_profiles(): assert a3_functions.load_profiles(profiles_file, person_to_friends, person_to_networks)???? if name == 'main': nose.runmodule() 它怎么知道我使用的是我自己制作的文本文件... 天哪,这太令人困惑了跨度>

标签: python testing


【解决方案1】:

假设您目前编写的代码位于一个名为“mycode”的模块中。

编写一个名为 testmycode 的新模块。 (即创建一个名为 testmycode.py 的 python 文件)

在那里,导入你要测试的模块(mycode)

编写一个名为 testupdate() 的函数。

在该函数中,首先编写一个您希望有效的文本文件(使用 file.write)。然后让 update_p_to_f 更新它。使用 assert 验证它是否符合您的预期。这是一个读取文本文件的测试。

然后你可以编写第二个函数 testupdate_write(),让你的代码写入一个文件——然后验证它写入的内容是否正确。

要运行测试,请使用(在命令行上)

 nosetests -sx testmycode.py

它将加载 testmycode 并运行它找到的所有以 test 开头的函数。

【讨论】:

  • 所以既然它以 txt 文件作为参数,这是否意味着我必须创建差异文本文件来测试它?
  • 如果你所说的“差异”是不同的,是的。这个想法是涵盖您要测试的功能的各个方面,以确保每一行代码都按预期工作。
【解决方案2】:

您可能想要测试程序的整体输出是否正确,以及程序的各个部分是否正确。

  • @j13r 已经介绍了如何测试程序的整体正确性以进行完整运行。
  • 您提到您有四个辅助函数。您可以为这些单独编写测试。

测试较小的代码片段很有帮助,因为与仅测试整个代码相比,您可以以更多、更具体的方式测试每个片段。

unittest 模块是一个用于执行测试的框架。

【讨论】:

  • 您可以使用鼻子仅运行单个测试:nosetests -sx testmycode.py:testupdate
  • 等等,我也必须为辅助函数编写一个单独的文件吗?或者我可以将所有内容都包含在它所属的一个功能下。
猜你喜欢
  • 1970-01-01
  • 2012-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多