pydev涵盖范围:pytest和本地pytest插件在两个单独的进程中运行,通过http,第2部分进行讨论

如何解决pydev涵盖范围:pytest和本地pytest插件在两个单独的进程中运行,通过http,第2部分进行讨论

这是pydev coverage: pytest and local pytest plugin running in two separate processes,talking over http报告的问题的续篇,提供了解决方案。

现在,我想使所有内容在Eclipse:PyDev内正常工作。

我制作了https://github.com/alanwilter/flask-pytest-example,其中包含一个示例,其中pytest-cov终端上运行时可以正常工作,但是由于我有兴趣使其在PyDev中工作,如果我在终端(PyDev用于运行pytest/coverage的包装程序)上运行此命令:

python /Users/alan/.p2/pool/plugins/org.python.pydev.core_8.0.0.202009061309/pysrc/runfiles.py $PWD --py-test-params -sv --cov=handlers
Received parameters: ['/Users/alan/.p2/pool/plugins/org.python.pydev.core_8.0.0.202009061309/pysrc/runfiles.py','/Users/alan/Downloads/flask-pytest-example','--py-test-params','-sv','--cov=handlers']
Params for pydev: ['/Users/alan/Downloads/flask-pytest-example']
Params for test framework: --py-test-params,['-sv','--cov=handlers']
Final test framework args: ['-sv','--cov=handlers','/Users/alan/Downloads/flask-pytest-example']
py_test_accept_filter: {}
========================== test session starts ==========================
platform darwin -- Python 3.7.6,pytest-5.4.3,py-1.9.0,pluggy-0.13.1 -- /usr/local/Caskroom/miniconda/base/bin/python
cachedir: .pytest_cache
rootdir: /Users/alan/Downloads/flask-pytest-example
plugins: xdist-1.33.0,forked-1.2.0,cov-2.10.0
collected 1 item

tests/test_with_api.py::test_via_api  * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

PASSED
>>>>Teardown app_service


---------- coverage: platform darwin,python 3.7.6-final-0 -----------
Name                   Stmts   Miss  Cover
------------------------------------------
handlers/__init__.py       0      0   100%
handlers/routes.py         8      0   100%
------------------------------------------
TOTAL                      8      0   100%

========================== 1 passed in 2.11s ==========================

效果很好,报告覆盖率100%。

Eclipse/PyDev中尝试相同的操作,在-sv --cov=handlers中使用Preference:PyDev:PyUnit选项,并且在“代码覆盖率”视图中勾选了所有选项,但我没有成功。 Console视图输出为:

Received parameters: ['/Users/alan/.p2/pool/plugins/org.python.pydev.core_8.0.0.202009061309/pysrc/runfiles.py','--port','62307','--coverage_output_dir','/Users/alan/workspace/.metadata/.plugins/org.python.pydev.debug/coverage','--coverage_include','--cov=handlers']
Params for pydev: ['/Users/alan/Downloads/flask-pytest-example','/Users/alan/Downloads/flask-pytest-example']
Params for test framework: --py-test-params,'--cov=handlers']
Final test framework args: ['--cov-append','--cov-report=','--cov=/Users/alan/Downloads/flask-pytest-example','/Users/alan/Downloads/flask-pytest-example']
py_test_accept_filter: {}
============================= test session starts ==============================
platform darwin -- Python 3.7.6,pluggy-0.13.1 -- /usr/local/Caskroom/miniconda/base/bin/python3.7
cachedir: .pytest_cache
rootdir: /Users/alan
plugins: xdist-1.33.0,cov-2.10.0
collecting ... collected 1 item

../Downloads/flask-pytest-example/tests/test_with_api.py::test_via_api ERROR

==================================== ERRORS ====================================
________________________ ERROR at setup of test_via_api ________________________

    @pytest.fixture(scope="session")
    def app_server():
        with TestProcess("python","app.py") as app_server:
>           wait_for_strings(app_server.read,10,"Running")

../Downloads/flask-pytest-example/tests/fix_api.py:19: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cb = <bound method BufferingBase.read of TestProcess(pid=28144,is_alive=False)>
seconds = 10,strings = ('Running',),start = 1599658625.855597
buff = '  File "/usr/local/Caskroom/miniconda/base/lib/python3.7/site.py",line 177\n    file=sys.stderr)\n        ^\nSyntaxError: invalid syntax\n'
check_strings = ['Running']

    def wait_for_strings(cb,seconds,*strings):
        """
        This checks that *string appear in cb(),IN THE GIVEN ORDER !
        """
        start = time.time()
        while True:
            buff = cb()
            check_strings = list(strings)
            check_strings.reverse()
            for line in buff.splitlines():
                if not check_strings:
                    break
                while check_strings and check_strings[-1] in line:
                    check_strings.pop()
            if not check_strings:
                return
            if time.time() - start > seconds:
                break
            time.sleep(0.05)
    
        raise AssertionError("Waited %0.2fsecs but %s did not appear in output in the given order !" % (
>           seconds,check_strings
        ))
E       AssertionError: Waited 10.00secs but ['Running'] did not appear in output in the given order !

/usr/local/Caskroom/miniconda/base/lib/python3.7/site-packages/process_tests.py:247: AssertionError


=========================== short test summary info ============================
ERROR ../Downloads/flask-pytest-example/tests/test_with_api.py::test_via_api
============================== 1 error in 10.49s ===============================

尝试调试/理解此错误,我对fix_api.py进行了以下修改:

    with TestProcess("python","app.py") as app_server:
        wait_for_strings(app_server.read,"Running")
        # time.sleep(2)

    with TestProcess("python","app.py") as app_server:
        # wait_for_strings(app_server.read,"Running")
        time.sleep(2)

这在终端上仍然有效,我知道app_server在2秒钟内启动,并在子进程中运行。 现在,在Eclipse / PyDev上运行,我得到了:

Received parameters: ['/Users/alan/.p2/pool/plugins/org.python.pydev.core_8.0.0.202009061309/pysrc/runfiles.py','63024',cov-2.10.0
collecting ... collected 1 item

../Downloads/flask-pytest-example/tests/test_with_api.py::test_via_api   File "/usr/local/Caskroom/miniconda/base/lib/python3.7/site.py",line 177
    file=sys.stderr)
        ^
SyntaxError: invalid syntax

FAILED
>>>>Teardown app_service
[snip]

它应该已经打印:

...
tests/test_with_api.py::test_via_api  * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
...

因此,这说明了为什么我的最初方法不起作用,因为从未给wait_for_strings()分配缓冲区来检测Running的键盘输入然后超时。

有人知道为什么它会失败吗?是因为Eclipse/PyDev的另一个子进程正在运行PyTest/Coverage吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res