我有一个脚本,可以执行各种操作并使用sys.argv访问参数,但是当脚本到达代码的unittest部分时,它表示没有用于此目的的模块。我拥有的脚本是:
class MyScript():
def __init__(self):
self.value = sys.argv[1]
def hello(self):
print self.value
def suite(self):
modules_to_test = ('external_sanity_onvif', 'starttest')
alltests = unittest.TestSuite()
for module in map(__import__, modules_to_test):
alltests.addTest(unittest.findTestCases(module))
return alltests
if __name__ == '__main__':
Run = MyScript()
Run.hello()
log_file = 'log_file.txt'
test_file = open(log_file, "w")
runner = unittest.TextTestRunner(test_file)
unittest.main(defaultTest='Run.suite', testRunner=runner)
假设我./script.py Hello
在命令行中输入。我得到的错误是:
AttributeError: 'module' object has no attribute 'Hello'
如果我删除unittest模块,它将起作用。另外,如果我删除testrunner日志并将其保留在:
unittest.main(defaultTest='Run.suite')
这仍然行不通。
谁能帮忙。
谢谢
我尝试了这种技巧,但仍然尝试阅读sys.argv
。
project = sys.argv[4:]
sys.argv = sys.argv[0:4]
我已经尝试过了,argv
但是仍然很难读取额外的参数。
问题是unittest.main()
要让您宝贵的argv供自己使用!它使用您提供的argv作为函数参数,或者sys.argv
使用您未明确提供argv的参数,并尝试加载名为您提供的参数的测试。在这种情况下,这意味着它将在模块“脚本”中查找名为的子模块,名为Hello
的TestCase
类Hello
,位于的测试用例类中的测试用例方法Hello
或Hello
返回TestCase
或的TestSuite
实例的可调用对象。
有几种方法可以解决此问题:
unittest.main()
并调用较低级别的unittest函数,以设置和运行您所想到的测试用例。sys.argv
,并充分利用该unittest.main()
行为。如果您的模块 除了 作为单元测试 之外 不打算独立运行,这可能是有道理的,因为模块的调用者可能不希望您从其argv中读取内容!argv=[sys.argv[0]]
作为参数unittest.main()
;应该可以避免尝试阅读您的文章。问题内容: 我目前正在自学Python,只是想以简化的方式(参考下面的示例)想知道代表什么。它只是在要求输入吗? 问题答案: 我想指出,先前的答案对用户的知识做出了许多假设。该答案尝试在更多教程级别回答问题。 对于Python的每次调用,都会自动生成一个字符串列表,这些字符串代表命令行上的参数(用空格分隔)。该名称来自C编程约定,其中argv和argc代表命令行参数。 在熟悉Python的同时,你
问题内容: 多年来,我从事的几乎所有产品都涉及到一定程度的Shell脚本(或Windows上的批处理文件,PowerShell等)。即使我们使用Java或C ++编写了大量代码,但似乎总是存在一些集成或安装任务,而这些任务或任务可以通过Shell脚本更好地完成。 因此,shell脚本成为附带代码的一部分,因此需要像已编译的代码一样进行测试。有没有人对其中的一些shell脚本单元测试框架有经验,例如
我面临一个问题,而嘲笑jUnit测试的东西。 情况如下: 类A实现了来自第三方jar的接口,并且需要实现method1。除了method1之外,A还包含method2,它是从method1调用的。method2本身调用一些外部服务。 我想单元测试方法1。 方法1接受输入,比如X。X有一个包裹在里面的输入变量,比如var1。var1由方法1中的逻辑使用,方法1在X中设置另一个变量,比如var2。 所
我有一个混合了objective-c和Swift的项目,我试图为它编写单元测试。我的项目名称是:Alphaproject我的产品模块名称是:Alphaproject我在我的主要目标(Alphaproject)中设置为YES Defines module,并设置为YES EnableTestability,以便仅在此同一目标中进行调试。 在我的测试类中,我尝试导入我的产品模块名称: @可测试导入项目
我最近更新到了Xcode 7 beta 5。我曾尝试将单元测试添加到早期的项目中,但在行上收到错误消息“No-some-modulename[myModuleName]”。 我试过了 使用选项清理项目清理生成文件夹 这些都不适用于这个项目(但是我已经得到了在另一个项目中工作的测试)。其他人有这个问题并解决了它吗?
问题内容: 我试图在将其他模块作为依赖项的模块中进行单元测试控制器代码的单元化,但是还没有弄清楚如何正确模拟它们。 我正在使用Jasmine Framework,并使用Karma(Testacular)运行测试。 模块代码 规格代码 我得到的错误是Karma是“ no module af.widgets”,因此显然我没有对模块依赖项进行模拟。有什么提示吗? 问题答案: 如果要模拟声明一个或多个服务
我在尝试包装我的代码以用于单元测试时遇到了一些问题。问题是。我有接口IHttpHandler: 现在很明显,我将在Connection类中有一些方法,这些方法将从my后端检索数据(JSON)。但是,我想为这个类编写单元测试,显然我不想编写针对真实后端的测试,而是一个被嘲弄的测试。我曾尝试谷歌一个很好的答案,但没有很大的成功。我以前可以并且曾经使用过Moq来模拟,但是从来没有在像HttpClient
当我声明一个本机Java模块时,我发现了一个奇怪的异常——新代码没有通过单元测试。基本上,我从React Native中的NativeModules导入的任何内容都缺少定义:因此单元测试失败,因为类型错误:无法读取未定义的属性“HelloWorld” 复制步骤: 但错误是 实际的Java是 这运行良好(当您运行它时),但单元测试讨厌它。问题似乎是React Native测试缺乏对