2012-04-04 115 views
-2

我的作业部分是为每个函数创建测试。这有点长,但我很困惑。我把这个函数下面的链接,所以你可以看到它看起来像
第一个代码是非常长的,因为。如何编写作业测试用例

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

高清test_load_profiles_

如果 == '主要': nose.runmodule() 我去那么远那么我不知道我可以测试的功能。

+0

是的,你不够具体。测试用例是可以输入到程序中的数据示例,您必须查看输出是否正确以及程序是否失败。要运行测试用例,您可以简单地创建一些文件,例如'profiles_file',并用它们运行程序。看看它是否有效。用不同的数据制作不同类型的文件,看看它们是否都能正常工作。当我们对数据一无所知时,很难看到应该运行哪些测试用例。 – jamylak 2012-04-04 09:41:40

+0

哦,因为有太多的数据我不能在这里复制它,除非我真的与他们一起详细介绍1。而且人们也会读它。所以测试这些类型的数据你必须创建你自己的文本? – xevaaa 2012-04-04 09:43:39

+0

是的,创建你自己的文件,或者你的程序接受的任何输入。尝试和使用几乎所有你能想到的不同类型的东西,看看你的程序是否适用于所有情况。 – jamylak 2012-04-04 09:45:46

回答

1

让我们假设你写了这么远是一个名为“mycode的”模块中的代码。

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

在那里,输入你想测试(mycode的)

写一个函数叫做testupdate模块()。

在这种功能,先写一个文本文件(file.write),您希望是有效的。然后让update_p_to_f更新它。使用assert验证它是否符合你的期望。这是一个阅读文本文件的测试。

然后,你可以写一个第二函数调用testupdate_write(),在那里你让你的代码写入到文件 - 然后验证它写的是正确的。

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

nosetests -sx testmycode.py 

将加载testmycode并运行它发现有与测试开始的所有功能。

+0

因为它需要txt文件作为参数这是否意味着我必须创建diff文本文件来测试它? – xevaaa 2012-04-04 17:51:28

+0

如果通过'差异'你的意思不同,是的。这个想法是涵盖你想测试的函数的各个方面,以确保每一行代码按预期工作。 – j13r 2012-04-04 18:43:01

0

你可能想测试这两个程序的整体输出是正确的,你的程序的个别部分是正确的。

  • @ j13r已经介绍了如何测试程序的全面正确性以确保正常运行。
  • 你提到你有四个帮助函数。你可以分别为它们编写测试。

测试小部分代码是有帮助的,因为您可以用更多和更具体的方式测试每个部分,而不是仅测试整个部分。

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

+0

您可以使用鼻子只运行单个测试:nosetests -sx testmycode.py:testupdate – j13r 2012-04-04 11:58:42

+0

等等,我必须为助手函数编写一个单独的文件?或者我可以将它全部纳入其下的一个功能之下。 – xevaaa 2012-04-04 17:35:59