All started here: https://github.com/pytest-dev/pytest-cov/issues/425

I can say by now that I have a working solution on my terminal, so when I
run:

pytest --cov views --cov db --cov-report term-missing:skip-covered -sv

===============================================================================
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/myproject
plugins: xdist-1.33.0, forked-1.2.0, cov-2.10.0
collected 46 items

tests/test_admin.py::test_attempt_create_user PASSED
tests/test_auth.py::test_login_logout  * Serving Flask app "views" (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
2020-09-03 18:26:26,157-INFO-werkzeug::_internal|113::  * Running on
http://127.0.0.1:5000/ (Press CTRL+C to quit)

PASSED
...
---------- coverage: platform darwin, python 3.7.6-final-0 -----------
Name                          Stmts   Miss  Cover   Missing
-----------------------------------------------------------
views/general.py                 52      2    96%   111, 113
views/helpers.py                 18     11    39%   10-14, 18-24
views/individual.py             218    113    48%   49-68, 74-125, 129-139,
145-155, 190, 336-382, 386-393, 400-428
views/save_configuration.py      34     23    32%   17-44
views/users.py                  128    104    19%   18-37, 52-90, 96-140,
144-155, 159-164, 168-173, 177-184
views/variant.py                 61      5    92%   34-36, 74-75
-----------------------------------------------------------
TOTAL                           985    258    74%

11 files skipped due to complete coverage.

I can see the coverage correctly reporting.

Now I'm trying to get that to work inside Eclipse/Pytest.

Essentially, when running Eclipse:Run:Run As:Python unit-test

Tests using my local pytest plugin (test_api) will fail complaining
basically that it waited for the application service to start and it timed
out.

@pytest.fixture(scope="session")

    def app_server():

        with TestProcess("python", "application.py") as app_server:

>           wait_for_strings(app_server.read, 10, "Running")


../Programmes/myproject/tests/fix_api.py:17:

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _


cb = <bound method BufferingBase.read of TestProcess(pid=78818,
is_alive=False)>

seconds = 10, strings = ('Running',), start = 1599149418.9482582

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

The most important feature for me is to be able to use the "Code Coverage"
view in Eclipse and be able to quickly see the the code not covered.

If I can't make pytest with two separated processes to work for coverage, I
was wondering how I could load the coverage.xml file for PyDev when running
in my terminal, something like:

pytest --cov views --cov db --cov-report xml:coverage.xml -sv

Code Coverage view has this button "Open cov" but it does not do what I
hoped it for, neither doing a "Refresh" loads from my local .coverage file.

So, if anyone could give any tip here on how to get it to work that would
be hugely appreciated.

Thanks in advance,

Alan
-- 
Alan Silva 🚲🏊‍♂🏃‍♂🇧🇷🇫🇷🇬🇧
_______________________________________________
pydev-code mailing list
pydev-code@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pydev-code

Reply via email to