我正在使用pythonpytest来运行我的单元测试。我的项目文件夹是:Main-包含数据文件:A.txtMain\Tests-我运行pytest的文件夹Main\Tests\A_test-包含测试文件的文件夹A_test文件夹中的测试使用文件A.txt(位于Main文件夹中)。我的问题是,当我运行py.test时,测试失败,因为它找不到A.txt。我发现是因为pytest在运行测试时使用了路径Main\Test,而不是将路径改为Main\Tests\A_test(我是在测试文件中打开A.txt时使用相对路径)我的问题:有没有办法让pytest将目录更改为它为每个测试执行的测试文件夹?
当您编写一些自给自足的脚本时,使用if__name__=='__main__'作为编写测试的地方是不是一个坏主意? 最佳答案 这实际上取决于您的代码和脚本的目的。对于大型和复杂的项目,您肯定必须将所有测试放在一个单独的地方。但是在处理一些小的事情时,将测试与代码一起进行可能是一个很好的解决方案-这是doctest的主要思想(这是一个很棒的Python模块,允许您在文档字符串中编写测试)。在这种情况下,您的if__name__=='__main__'将如下所示:if__name__=="__main__":importdoctestd
我使用setuptools'tests_require'来指定测试我的包所需的依赖项。tests_require-http://pythonhosted.org/distribute/setuptools.html#new-and-changed-setup-keywords我已经开始使用wheelpackaginghttp://wheel.readthedocs.org/en/latest/并为我当前的包及其所有依赖项构建一个wheels目录。pipwheel--wheel-dir=/tmp/wheelhouse.不过,我还想为任何包tests_require中列出的所有包构建轮子。
py.test的--verbose选项需要显示断言失败的完整差异,但这也会在执行期间显示每个测试的全名(很吵)。我希望在断言失败时显示完整的差异,但我只希望在测试运行时显示单个.。有办法做到这一点吗? 最佳答案 不幸的是,似乎没有配置或命令行标志,因为它是硬编码的deepinsidepytest:当你定义--verbose时,你会得到整个包。但是,我设法想出了这个hackishhack。将以下函数放入您的conftest.py:defpytest_configure(config):terminal=config.pluginman
我刚刚开始一个Pyramid项目,遵循Pyramiddocs的建议.测试命令如下所示:../bin/pythonsetup.pytest-q..这给了我这个结果:$../bin/pythonsetup.pytest-qrunningtestrunningegg_infowritingrequirementstoclimas_ng.egg-info/requires.txtwritingclimas_ng.egg-info/PKG-INFOwritingtop-levelnamestoclimas_ng.egg-info/top_level.txtwritingdependency_li
我正在开发一个使用tornado的websocket功能的项目。我看到了大量关于使用异步代码的文档,但没有关于如何使用它来创建与其WebSocket实现一起工作的单元测试的内容。tornado.testing是否提供执行此操作的功能?如果是这样,有人可以提供一个简短的例子来说明如何实现它吗?提前致谢。 最佳答案 正如@Vladimir所说,您仍然可以使用AsyncHTTPTestCase来创建/管理测试网络服务器实例,但是您仍然可以以几乎相同的方式测试WebSockets正常的HTTP请求-只是没有语法糖来帮助您。Tornado也有
我有一个具有以下存储库结构的python库:repobase|-mylibrary||-__init__.py|-tests|-test_mylibrary.py到目前为止,运行测试可以简单地通过调用repobase目录中的py.test来完成。test_mylibrary.py中的importmylibrary然后使用repobase/mylibrary中的本地代码。现在,我扩展了库以使用编译代码。因此,repobase/mylibrary中的源代码本身并不能正常工作。我必须执行setup.pybuild。这将创建repobase/build/lib.linux-x86_64-2.7
如果我想要随机训练/测试拆分,我使用sklearn辅助函数:In[1]:fromsklearn.model_selectionimporttrain_test_split...:train_test_split([1,2,3,4,5,6])...:Out[1]:[[1,6,4,2],[5,3]]获得非混洗训练/测试拆分的最简洁方法是什么,即[[1,2,3,4],[5,6]]编辑目前我正在使用train,test=data[:int(len(data)*0.75)],data[int(len(data)*0.75):]但希望有更好的东西。我在sklearn上开了一个问题https://g
如何让pythonsetup.pytest工作?-当前输出:$pythonsetup.pytest#alsotried:`pythonsetup.pytests`/usr/lib/python2.7/distutils/dist.py:267:\UserWarning:Unknowndistributionoption:'test_suite'warnings.warn(msg)usage:setup.py[global_opts]cmd1[cmd1_opts][cmd2[cmd2_opts]...]or:setup.py--help[cmd1cmd2...]or:setup.py--
我必须测试从request.args获取特定信息的特定View。我不能模拟这个,因为View中的很多东西都使用请求对象。我能想到的唯一替代方法是手动设置request.args。我可以用test_request_context()做到这一点,例如:withself.app.test_request_context()asreq:req.request.args={'code':'mockedaccesstoken'}MyView()现在此View中的请求将具有我设置的参数。但是我需要调用我的View,而不仅仅是初始化它,所以我使用这个:withself.app.test_client(