Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python时如何在测试前运行初始化代码';将unittest模块作为testrunner?_Python_Unit Testing_Logging - Fatal编程技术网

使用Python时如何在测试前运行初始化代码';将unittest模块作为testrunner?

使用Python时如何在测试前运行初始化代码';将unittest模块作为testrunner?,python,unit-testing,logging,Python,Unit Testing,Logging,在运行随库提供的测试之前,库的用户如何运行自己的初始化代码(例如设置记录器的调试级别)?Python的unittest模块用作testrunner。您可以在调用之前进行设置工作 或者您可以对测试套件进行子类化,并运行一个 或者,您可以让测试设置将回调合并到用户定义的设置方法中。您可以尝试使用pytest运行unittests。如果这样做有效(许多基于unittest的测试套件都有效),那么您可以创建一个小模块,例如“mymod.py”,定义一个pytest配置挂钩: # content of m

在运行随库提供的测试之前,库的用户如何运行自己的初始化代码(例如设置记录器的调试级别)?Python的
unittest
模块用作testrunner。

您可以在调用之前进行设置工作

或者您可以对测试套件进行子类化,并运行一个


或者,您可以让测试设置将回调合并到用户定义的设置方法中。

您可以尝试使用pytest运行unittests。如果这样做有效(许多基于unittest的测试套件都有效),那么您可以创建一个小模块,例如“mymod.py”,定义一个pytest配置挂钩:

# content of mymod.py
def pytest_configure():
    import logging
    logging.getLogger().setLevel(logging.WARN)
如果现在执行py.test,如下所示:

$ py.test -p mymmod --pyargs mylib
python -m unittest discover -v
然后将搜索“mylib”包以查找测试,并在运行测试之前修改日志记录级别。“-p”选项指定要加载的插件,“--pyargs”告诉pytest首先尝试导入参数,而不是将其视为目录名或文件名(默认值)

更多信息:和

嗯,,
霍尔格

类似问题的答案在这里更有用:

我使用了python setUpClass方法

我像这样运行测试:

$ py.test -p mymmod --pyargs mylib
python -m unittest discover -v

公元1年。从命令行运行测试时,用户不会自己运行
unittest.main
。公元2年。如果有很多测试套件,并且只需要设置记录器的调试级别,那么这就相当尴尬了。公元3年。这需要对库的测试进行更改,我正在寻找一种在外部执行的方法,而不涉及现有代码。ISTM您需要为unittest.main()编写一个命令行包装器,并应用上面列出的技术之一。Unittest目前无法立即执行您想要的操作。@piotrdorgost我不知道。这是一个主动维护的模块,所以您可以随时提交功能请求,这正是我的想法。这应该合并到
unittest
:)有没有办法执行PYTHONSTARTUP文件而不是
mymod