【问题标题】:Python unit test comparing list valuesPython单元测试比较列表值
【发布时间】:2014-07-29 03:37:12
【问题描述】:

所以我目前正在尝试编写一个简单的测试,它将一个列表的值与单独的 py 文件中的另一个列表的值进行比较。我对assertListEquals(a,b)很熟悉,但我可能使用不正确或者我遗漏了一些东西。当我运行模块时,我绝对没有得到测试套件的响应。没有错误代码或任何东西。也许你们可以帮助我。

这是我的测试套件

from MyList import main
import unittest

class TestSuite(unittest.TestCase):



    def test_ValueContains(self):

        print('test')

        testList = [1,2,3]
        value = MyList
        self.assertListEqual(testList,value)


if __name__== "main":
            unittest.main()

这里是 MyList.py

def main():

    MyList = [1,2,3]

main()

我想要做的就是能够检查MyList == testList 并在运行测试时得到“Ok”。

对不起,我是单元测试的新手

【问题讨论】:

  • 我收到了NameError: global name 'myList' is not defined 错误,这是真的 - MyList 是在 main() 函数范围内定义的,它没有被导入。
  • 尝试在测试中添加打印语句,看看它是否在运行。检查命令行参数的文档。而且在您的单独模块中,您设置全局变量看起来并不简单。
  • 嘿@daveydave400。我在测试中添加了一条打印语句,正如您所料,测试似乎根本没有运行。我为测试套件添加了更新的代码。我不知道为什么..

标签: python unit-testing assertions


【解决方案1】:

尝试修改您的代码:

def main():
    MyList = [1,2,3]
    return MyList

和

from MyList import main
import unittest

class TestSuite(unittest.TestCase):

    def test_ValueContains(self):

        print('test')

        testList = [1,2,3]
        value = main()
        self.assertListEqual(testList,value)

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

问题是您在运行 main 方法时没有存储值。这可以通过返回值而不是简单地分配来实现。

您还需要更改底部的 if 语句

if __name__ == "main":

到

if __name__ == "__main__":

因为这是正确的命名约定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    相关资源
    最近更新 更多