[TIP] Resetting or Restarting coverage.py trace

Ned Batchelder ned at nedbatchelder.com
Tue Oct 18 08:34:04 PDT 2016


I have no formal plan to finish the feature, mainly because my
side-project work on coverage.py never has formal plans. Who-tests-what
is a large feature with a number of challenges to address. I have been
intending for a while to write a blog post detailing them, but for now
the discussion on the bitbucket issue will have to suffice for those
interested in the details.

--Ned.


On 10/18/16 9:20 AM, Shai Cantor wrote:
> Ned,
> I understand it is a hack.
> Can we expect to see it officially some time?
>
> Just clarifying for everyone who's interested:
> WTW means who-tests-what.
> Meaning, coverage per test.
>
> On Tue, Oct 18, 2016 at 1:33 PM,
> <testing-in-python-request at lists.idyll.org
> <mailto:testing-in-python-request at lists.idyll.org>> wrote:
>
>     Send testing-in-python mailing list submissions to
>             testing-in-python at lists.idyll.org
>     <mailto:testing-in-python at lists.idyll.org>
>
>     To subscribe or unsubscribe via the World Wide Web, visit
>             http://lists.idyll.org/listinfo/testing-in-python
>     <http://lists.idyll.org/listinfo/testing-in-python>
>     or, via email, send a message with subject or body 'help' to
>             testing-in-python-request at lists.idyll.org
>     <mailto:testing-in-python-request at lists.idyll.org>
>
>     You can reach the person managing the list at
>             testing-in-python-owner at lists.idyll.org
>     <mailto:testing-in-python-owner at lists.idyll.org>
>
>     When replying, please edit your Subject line so it is more specific
>     than "Re: Contents of testing-in-python digest..."
>
>     Today's Topics:
>
>        1. testfixtures 4.12.0 Released! (Chris Withers)
>        2. Re: Resetting or Restarting coverage.py trace (Ned Batchelder)
>
>
>     ---------- Forwarded message ----------
>     From: Chris Withers <chris at simplistix.co.uk
>     <mailto:chris at simplistix.co.uk>>
>     To: testing-in-python at lists.idyll.org
>     <mailto:testing-in-python at lists.idyll.org>, Python List
>     <python-list at python.org <mailto:python-list at python.org>>,
>     simplistix at googlegroups.com <mailto:simplistix at googlegroups.com>
>     Cc: 
>     Date: Tue, 18 Oct 2016 09:07:09 +0100
>     Subject: [TIP] testfixtures 4.12.0 Released!
>     Hi All,
>
>     I'm pleased to announce the release of testfixtures 4.12.0
>     featuring the following:
>
>     - Add support for specifying a callable to extract rows from log
>     records
>       when using LogCapture().
>
>     - Add support for recursive comparison of log messages with
>       LogCapture().
>
>     The package is on PyPI and a full list of all the links to docs,
>     issue trackers and the like can be found here:
>
>     https://github.com/Simplistix/testfixtures
>     <https://github.com/Simplistix/testfixtures>
>
>     Any questions, please do ask on the Testing in Python list or on
>     the Simplistix open source mailing list...
>
>     cheers,
>
>     Chris
>
>
>
>
>     ---------- Forwarded message ----------
>     From: Ned Batchelder <ned at nedbatchelder.com
>     <mailto:ned at nedbatchelder.com>>
>     To: testing-in-python at lists.idyll.org
>     <mailto:testing-in-python at lists.idyll.org>
>     Cc: 
>     Date: Tue, 18 Oct 2016 06:33:47 -0400
>     Subject: Re: [TIP] Resetting or Restarting coverage.py trace
>
>     Just to be clear: there is a bit of hack code in coverage.py now,
>     with "WTW" as a moniker, but it is not a feature, it is a hack to
>     test out some theories about how a future feature might work.
>
>     --Ned.
>
>
>     On 10/17/16 11:31 AM, Shai Cantor wrote:
>>     Yup, that's what I'm doing right now.
>>     I've enabled the WTW feature and manually changing context upon a
>>     new test or time frame.
>>     The thing is, I cannot clear the contexts data, when I try to do
>>     that it never records anymore.
>>     I can only change context and keep the old.
>>
>>     Any ideas?
>>
>>     On Mon, Oct 17, 2016 at 6:25 PM,
>>     <testing-in-python-request at lists.idyll.org
>>     <mailto:testing-in-python-request at lists.idyll.org>> wrote:
>>
>>         Send testing-in-python mailing list submissions to
>>                 testing-in-python at lists.idyll.org
>>         <mailto:testing-in-python at lists.idyll.org>
>>
>>         To subscribe or unsubscribe via the World Wide Web, visit
>>                 http://lists.idyll.org/listinfo/testing-in-python
>>         <http://lists.idyll.org/listinfo/testing-in-python>
>>         or, via email, send a message with subject or body 'help' to
>>                 testing-in-python-request at lists.idyll.org
>>         <mailto:testing-in-python-request at lists.idyll.org>
>>
>>         You can reach the person managing the list at
>>                 testing-in-python-owner at lists.idyll.org
>>         <mailto:testing-in-python-owner at lists.idyll.org>
>>
>>         When replying, please edit your Subject line so it is more
>>         specific
>>         than "Re: Contents of testing-in-python digest..."
>>
>>         Today's Topics:
>>
>>            1. Re: Resetting or Restarting coverage.py trace (Ned
>>         Batchelder)
>>
>>
>>         ---------- Forwarded message ----------
>>         From: Ned Batchelder <ned at nedbatchelder.com
>>         <mailto:ned at nedbatchelder.com>>
>>         To: testing-in-python at lists.idyll.org
>>         <mailto:testing-in-python at lists.idyll.org>
>>         Cc: 
>>         Date: Mon, 17 Oct 2016 11:25:08 -0400
>>         Subject: Re: [TIP] Resetting or Restarting coverage.py trace
>>
>>         Another way would be to somehow get the "who tests what"
>>         feature implemented, so that you could segregate your results
>>         by which test covered the code. 
>>         https://bitbucket.org/ned/coveragepy/issues/170/show-who-tests-what
>>         <https://bitbucket.org/ned/coveragepy/issues/170/show-who-tests-what>
>>
>>         But that is a big effort.
>>
>>         --Ned.
>>
>>         On 10/17/16 11:17 AM, Shai Cantor wrote:
>>>         I wish.
>>>         In some setups, companies spin up servers that are dedicated
>>>         for testing by multiple clients.
>>>         Those cannot be frequently restarted.
>>>         Do you think there can be another way?
>>>
>>>         On Mon, Oct 17, 2016 at 4:00 PM,
>>>         <testing-in-python-request at lists.idyll.org
>>>         <mailto:testing-in-python-request at lists.idyll.org>> wrote:
>>>
>>>             Send testing-in-python mailing list submissions to
>>>                     testing-in-python at lists.idyll.org
>>>             <mailto:testing-in-python at lists.idyll.org>
>>>
>>>             To subscribe or unsubscribe via the World Wide Web, visit
>>>                    
>>>             http://lists.idyll.org/listinfo/testing-in-python
>>>             <http://lists.idyll.org/listinfo/testing-in-python>
>>>             or, via email, send a message with subject or body 'help' to
>>>                     testing-in-python-request at lists.idyll.org
>>>             <mailto:testing-in-python-request at lists.idyll.org>
>>>
>>>             You can reach the person managing the list at
>>>                     testing-in-python-owner at lists.idyll.org
>>>             <mailto:testing-in-python-owner at lists.idyll.org>
>>>
>>>             When replying, please edit your Subject line so it is
>>>             more specific
>>>             than "Re: Contents of testing-in-python digest..."
>>>
>>>             Today's Topics:
>>>
>>>                1. Re: Resetting or Restarting coverage.py trace (Ned
>>>             Batchelder)
>>>                2. Re: pytest (James)
>>>
>>>
>>>             ---------- Forwarded message ----------
>>>             From: Ned Batchelder <ned at nedbatchelder.com
>>>             <mailto:ned at nedbatchelder.com>>
>>>             To: testing-in-python at lists.idyll.org
>>>             <mailto:testing-in-python at lists.idyll.org>
>>>             Cc: 
>>>             Date: Mon, 17 Oct 2016 07:09:33 -0400
>>>             Subject: Re: [TIP] Resetting or Restarting coverage.py trace
>>>
>>>             Wouldn't it be easiest to restart the process between
>>>             the two phases?
>>>
>>>             --Ned.
>>>
>>>
>>>             On 10/17/16 4:22 AM, Shai Cantor wrote:
>>>>             I'm trying to find the coverage of multiple processes
>>>>             that are running on multiple test phases.
>>>>             For example:
>>>>
>>>>               * A CI server that is conducting tests that make HTTP
>>>>                 calls to another server for functional tests phase.
>>>>               * The same CI server is conducting tests that make
>>>>                 other HTTP calls to the same server as part of the
>>>>                 performance test phase.
>>>>
>>>>             I would like to measure coverage for the functional
>>>>             test phase, reset the coverage and start measuring
>>>>             again from scratch for the performance test phase.
>>>>
>>>>             On Sun, Oct 16, 2016 at 10:00 PM,
>>>>             <testing-in-python-request at lists.idyll.org
>>>>             <mailto:testing-in-python-request at lists.idyll.org>> wrote:
>>>>
>>>>                 Send testing-in-python mailing list submissions to
>>>>                         testing-in-python at lists.idyll.org
>>>>                 <mailto:testing-in-python at lists.idyll.org>
>>>>
>>>>                 To subscribe or unsubscribe via the World Wide Web,
>>>>                 visit
>>>>                        
>>>>                 http://lists.idyll.org/listinfo/testing-in-python
>>>>                 <http://lists.idyll.org/listinfo/testing-in-python>
>>>>                 or, via email, send a message with subject or body
>>>>                 'help' to
>>>>                         testing-in-python-request at lists.idyll.org
>>>>                 <mailto:testing-in-python-request at lists.idyll.org>
>>>>
>>>>                 You can reach the person managing the list at
>>>>                         testing-in-python-owner at lists.idyll.org
>>>>                 <mailto:testing-in-python-owner at lists.idyll.org>
>>>>
>>>>                 When replying, please edit your Subject line so it
>>>>                 is more specific
>>>>                 than "Re: Contents of testing-in-python digest..."
>>>>
>>>>                 Today's Topics:
>>>>
>>>>                    1. Resetting or Restarting coverage.py trace
>>>>                 (Shai Cantor)
>>>>                    2. Re: Resetting or Restarting coverage.py trace
>>>>                 (Ned Batchelder)
>>>>                    3. Re: are the absolute paths in .coverage
>>>>                 necessary? (Chris Withers)
>>>>
>>>>
>>>>                 ---------- Forwarded message ----------
>>>>                 From: Shai Cantor <shai at sealights.io
>>>>                 <mailto:shai at sealights.io>>
>>>>                 To: testing-in-python at lists.idyll.org
>>>>                 <mailto:testing-in-python at lists.idyll.org>
>>>>                 Cc: 
>>>>                 Date: Sun, 16 Oct 2016 09:36:42 +0300
>>>>                 Subject: [TIP] Resetting or Restarting coverage.py
>>>>                 trace
>>>>                 Hi,
>>>>
>>>>                 So I'm using coverage.py API
>>>>
>>>>                 import coverage
>>>>
>>>>                 cov = coverage.Coverage()
>>>>                 cov.start()
>>>>
>>>>                 # .. call your code ..
>>>>
>>>>                 cov.stop()
>>>>                 cov.save()
>>>>
>>>>
>>>>                 The main thread creates a coverage instance and
>>>>                 starts it.
>>>>                 During the lifetime of the program I have multiple
>>>>                 threads and I need every once in while to reset or
>>>>                 restart the coverage process (or clear coverage
>>>>                 data) from one of the underlying threads.
>>>>                 Problem is that tracing is stopped after I do that.
>>>>                 I guess it's because I start it from another thread.
>>>>
>>>>                 Is there a way I can reset/restart coverage from
>>>>                 another thread or manually clear coverage data?
>>>>
>>>>                 Thanks
>>>>
>>>>
>>>>
>>>>                 ---------- Forwarded message ----------
>>>>                 From: Ned Batchelder <ned at nedbatchelder.com
>>>>                 <mailto:ned at nedbatchelder.com>>
>>>>                 To: testing-in-python at lists.idyll.org
>>>>                 <mailto:testing-in-python at lists.idyll.org>
>>>>                 Cc: 
>>>>                 Date: Sun, 16 Oct 2016 12:10:48 -0400
>>>>                 Subject: Re: [TIP] Resetting or Restarting
>>>>                 coverage.py trace
>>>>                 On 10/16/16 2:36 AM, Shai Cantor wrote:
>>>>>                 Hi,
>>>>>
>>>>>                 So I'm using coverage.py API
>>>>>                 import coverage
>>>>>
>>>>>                 cov = coverage.Coverage()
>>>>>                 cov.start()
>>>>>
>>>>>                 # .. call your code ..
>>>>>
>>>>>                 cov.stop()
>>>>>                 cov.save()
>>>>>
>>>>>                 The main thread creates a coverage instance and
>>>>>                 starts it.
>>>>>                 During the lifetime of the program I have multiple
>>>>>                 threads and I need every once in while to reset or
>>>>>                 restart the coverage process (or clear coverage
>>>>>                 data) from one of the underlying threads.
>>>>>                 Problem is that tracing is stopped after I do
>>>>>                 that. I guess it's because I start it from another
>>>>>                 thread.
>>>>>
>>>>>                 Is there a way I can reset/restart coverage from
>>>>>                 another thread or manually clear coverage data?
>>>>>
>>>>                 I haven't heard this need before, to occasionally
>>>>                 reset or clear the coverage data from one of many
>>>>                 threads. Can you say more about what the bigger
>>>>                 picture is here? There might be an easier way to
>>>>                 get it done.
>>>>
>>>>                 --Ned.
>>>>
>>>>
>>>>                 ---------- Forwarded message ----------
>>>>                 From: Chris Withers <chris at simplistix.co.uk
>>>>                 <mailto:chris at simplistix.co.uk>>
>>>>                 To: Ned Batchelder <ned at nedbatchelder.com
>>>>                 <mailto:ned at nedbatchelder.com>>,
>>>>                 "testing-in-python at lists.idyll.org
>>>>                 <mailto:testing-in-python at lists.idyll.org>"
>>>>                 <testing-in-python at lists.idyll.org
>>>>                 <mailto:testing-in-python at lists.idyll.org>>
>>>>                 Cc: 
>>>>                 Date: Sun, 16 Oct 2016 19:44:38 +0100
>>>>                 Subject: Re: [TIP] are the absolute paths in
>>>>                 .coverage necessary?
>>>>                 Hi Ned,
>>>>
>>>>                 Sorry, I meant: do the paths recorded in the
>>>>                 .coverage files need to be absolute or could
>>>>                 Coverage be changed to just record the path
>>>>                 relatively to the current working directory at the
>>>>                 start of execution?
>>>>
>>>>                 cheers,
>>>>
>>>>                 Chris
>>>>
>>>>
>>>>                 On 12/10/2016 22:31, Ned Batchelder wrote:
>>>>
>>>>                     Chris, as far as I can tell, they do not have
>>>>                     to be absolute. As you can
>>>>                     see from the sample of my rc file, you can
>>>>                     replace an arbitrary prefix
>>>>                     with *, and it will work just fine.  How about
>>>>                     this:
>>>>
>>>>                     [paths]
>>>>                     mylib =
>>>>                        mylib
>>>>                        */workspace/PYTHON/*/mylib
>>>>                     tests =
>>>>                        tests
>>>>                        */workspace/PYTHON/*/tests
>>>>
>>>>                     --Ned.
>>>>
>>>>
>>>>                     On 10/12/16 10:59 AM, Chris Withers wrote:
>>>>
>>>>                         What I currently have is:
>>>>
>>>>                         [paths]
>>>>                         mylib =
>>>>                            mylib
>>>>                          
>>>>                          /data/jenkins/jobs/mylib-test/workspace/PYTHON/*/mylib
>>>>                         tests =
>>>>                            tests
>>>>                          
>>>>                          /data/jenkins/jobs/mylib-test/workspace/PYTHON/*/tests
>>>>
>>>>                         How can I remove the absolute bits of that?
>>>>
>>>>                         But, back to my original question: why are
>>>>                         the paths in .coverage
>>>>                         absolute in the first place? :-)
>>>>
>>>>                         Chris
>>>>
>>>>                         On 12/10/2016 15:53, Ned Batchelder wrote:
>>>>
>>>>                             Chris, can you show the absolute paths
>>>>                             you are using?  I have this in my
>>>>                             rc file to deal with varieties of CI:
>>>>
>>>>                                  [paths]
>>>>                                  source =
>>>>                                      .
>>>>                                      *\coverage\trunk
>>>>                                      */coverage/trunk
>>>>                                      *\coveragepy
>>>>
>>>>                             --Ned.
>>>>
>>>>
>>>>                             On 10/12/16 10:00 AM, Chris Withers wrote:
>>>>
>>>>                                 Hi Ned,
>>>>
>>>>                                 Are the absolute paths necessary in
>>>>                                 .coverage?
>>>>
>>>>                                 The reason I ask is that if, for
>>>>                                 example, they were relative to the
>>>>                                 cwd, then I wouldn't need a
>>>>                                 .coveragerc with a whole bunch of paths
>>>>                                 predicated on the exact filesystem
>>>>                                 layout of my CI server.
>>>>
>>>>                                 thoughts?
>>>>
>>>>                                 Chris
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>                 _______________________________________________
>>>>                 testing-in-python mailing list
>>>>                 testing-in-python at lists.idyll.org
>>>>                 <mailto:testing-in-python at lists.idyll.org>
>>>>                 http://lists.idyll.org/listinfo/testing-in-python
>>>>                 <http://lists.idyll.org/listinfo/testing-in-python>
>>>>
>>>>
>>>>
>>>>
>>>>             _______________________________________________
>>>>             testing-in-python mailing list
>>>>             testing-in-python at lists.idyll.org
>>>>             <mailto:testing-in-python at lists.idyll.org>
>>>>             http://lists.idyll.org/listinfo/testing-in-python
>>>>             <http://lists.idyll.org/listinfo/testing-in-python>
>>>             ---------- Forwarded message ---------- From: James
>>>             <bjlockie at lockie.ca <mailto:bjlockie at lockie.ca>>
>>>             To: Bruno Oliveira <nicoddemus at gmail.com
>>>             <mailto:nicoddemus at gmail.com>>,
>>>             testing-in-python at lists.idyll.org
>>>             <mailto:testing-in-python at lists.idyll.org> Cc: 
>>>             Date: Mon, 17 Oct 2016 09:00:39 -0400 Subject: Re: [TIP]
>>>             pytest
>>>
>>>             The output was: a = <testscript.TestAclasss instance at
>>>             0x7f3ca6bf83b0>     def test_foo(a): >       assert a ==
>>>             '1' E       assert <testscript.TestAclasss instance at
>>>             0x7f3ca6bf83b0> == '1' testscript.py:6: AssertionError 1
>>>             failed in 0.03 seconds
>>>
>>>             The missing "self" fixed it.
>>>
>>>             On 2016-10-16 12:56 AM, Bruno Oliveira wrote:
>>>>
>>>>             Hi James,
>>>>
>>>>             What error do you get? From your example it is missing
>>>>             a |self| argument, otherwise it should work just fine.
>>>>
>>>>             Cheers, Bruno.
>>>>
>>>>>>>>             On Sat, Oct 15, 2016 at 11:03 AM James
>>>>             <bjlockie at lockie.ca <mailto:bjlockie at lockie.ca>> wrote:
>>>>
>>>>                 I tried to make it work with a class:
>>>>
>>>>                 import pytest # testscript.py class TestAclasss:
>>>>
>>>>                     def test_foo(a):         assert a == '1'
>>>>
>>>>                 Do I need to do something in the __init__ function?
>>>>                 On 2016-10-14 02:50 PM, Bruno Oliveira wrote:
>>>>>
>>>>>                 Hi James,
>>>>>
>>>>>                 Thanks for posting the complete example.
>>>>>
>>>>>                 There are some problems here, both general Python
>>>>>                 problems and some related to how you are using pytest:
>>>>>
>>>>>                  1. |testscript.py| has no access to the |A|
>>>>>                     function because it doesn’t import it.
>>>>>                  2. You probably want to declare your fixture in a
>>>>>                     |conftest.py| file so pytest can make it
>>>>>                     available for all tests in your test suite.
>>>>>                  3. You have to first declare your option using
>>>>>                     the |pytest_addoption| hook.
>>>>>                  4. Since you intend to provide the value passed
>>>>>                     in the command line to the tests using a
>>>>>                     fixture, it is simpler to skip the test in the
>>>>>                     fixture itself.
>>>>>
>>>>>                 Here’s the full example with my suggestions:
>>>>>
>>>>>                 |# conftest.py import pytest
>>>>>                 @pytest.fixture(scope='module') def a(request):
>>>>>                 value = request.config.getoption("A") if not
>>>>>                 value: pytest.skip('test needs -A option to run')
>>>>>                 return value def pytest_addoption(parser):
>>>>>                 parser.addoption("--A", action="store",
>>>>>                 default=None, help="a option") # testscript.py def
>>>>>                 test_foo(a): assert a == '1' |
>>>>>
>>>>>                 Running it:
>>>>>
>>>>>                 |$ py.test testscript.py -q s 1 skipped in 0.01
>>>>>                 seconds $ py.test testscript.py -q --A 1 . 1
>>>>>                 passed in 0.01 seconds $ py.test testscript.py -q
>>>>>                 --A 2 F ==================================
>>>>>                 FAILURES ===================================
>>>>>                 __________________________________ test_foo
>>>>>                 ___________________________________ a = '2' def
>>>>>                 test_foo(a): > assert a == '1' E assert '2' == '1'
>>>>>                 E - 2 E + 1 testscript.py:6: AssertionError 1
>>>>>                 failed in 0.07 seconds |
>>>>>
>>>>>                 Hope that helps, Bruno.
>>>>>
>>>>>>>>>>                 On Fri, Oct 14, 2016 at 3:07 PM James
>>>>>                 <bjlockie at lockie.ca <mailto:bjlockie at lockie.ca>>
>>>>>                 wrote:
>>>>>
>>>>>                     Here is the exact code: $ cat testconfig.py
>>>>>                     import pytest
>>>>>                     @pytest.fixture(scope='module') def
>>>>>                     A(request):     return
>>>>>                     request.config.getoption("--A")
>>>>>                     $ cat testscript.py import pytest
>>>>>                       skip_A = pytest.mark.skipif(    
>>>>>                     A(pytest.config.request),     reason="need --A
>>>>>                     option to run" )
>>>>>                     $ py.test testscript.py
>>>>>                     ============================= test session
>>>>>                     starts ============================== platform
>>>>>                     linux2 -- Python 2.7.12, pytest-2.8.7,
>>>>>                     py-1.4.31, pluggy-0.3.1 rootdir:
>>>>>                     /home/rjl/pytest, inifile: collected 0 items /
>>>>>                     1 errors ====================================
>>>>>                     ERRORS ====================================
>>>>>                     ________________________ ERROR collecting
>>>>>                     testscript.py ________________________
>>>>>                     testscript.py:4: in <module>    
>>>>>                     A(pytest.config.request),
>>>>>                     E   NameError: name 'A' is not defined
>>>>>                     =========================== 1 error in 0.01
>>>>>                     seconds ============================ Instead
>>>>>                     of doing pytest.config.getoptionmore than one
>>>>>                     like this: skip_A = pytest.mark.skipif(
>>>>>                     pytest.config.getoption("--A"), reason="need
>>>>>                     --A option to run" ) I want to do it once in
>>>>>                     the config file. I might want to use the value
>>>>>                     of the argument --A elsewhere so I don't want
>>>>>                     to do getoption many times.
>>>>>                     On 2016-10-14 01:16 PM, Bruno Oliveira wrote:
>>>>>>
>>>>>>                     Hi,
>>>>>>
>>>>>>                     After fixing the missing “pytest” import, I
>>>>>>                     get this error:
>>>>>>
>>>>>>                     |foo.py:8: in <module>
>>>>>>                     A(pytest.config.request), E AttributeError:
>>>>>>                     'Config' object has no attribute 'request' |
>>>>>>
>>>>>>                     Please make sure to post a complete example
>>>>>>                     and state clearly what your problem is and
>>>>>>                     what you are trying to accomplish.
>>>>>>
>>>>>>                     Cheers, Bruno.
>>>>>>
>>>>>>>>>>>>                     On Fri, Oct 14, 2016 at 2:03 PM James
>>>>>>                     <bjlockie at lockie.ca
>>>>>>                     <mailto:bjlockie at lockie.ca>> wrote:
>>>>>>
>>>>>>                         I have this in my config file:
>>>>>>                         @pytest.fixture(scope='module') def
>>>>>>                         A(request):     return
>>>>>>                         request.config.getoption("--A")   skip_A
>>>>>>                         = pytest.mark.skipif(    
>>>>>>                         A(pytest.config.request),    
>>>>>>                         reason="need --A option to run" ) but
>>>>>>                         when I run it, it says E   NameError:
>>>>>>                         name 'A' is not defined  
>>>>>>                         _______________________________________________
>>>>>>                         testing-in-python mailing list
>>>>>>                         testing-in-python at lists.idyll.org
>>>>>>                         <mailto:testing-in-python at lists.idyll.org>
>>>>>>                         http://lists.idyll.org/listinfo/testing-in-python
>>>>>>                         <http://lists.idyll.org/listinfo/testing-in-python>
>>>>>>
>>>>>>
>>>             _______________________________________________
>>>             testing-in-python mailing list
>>>             testing-in-python at lists.idyll.org
>>>             <mailto:testing-in-python at lists.idyll.org>
>>>             http://lists.idyll.org/listinfo/testing-in-python
>>>             <http://lists.idyll.org/listinfo/testing-in-python> 
>>>
>>>         _______________________________________________
>>>         testing-in-python mailing list
>>>         testing-in-python at lists.idyll.org
>>>         <mailto:testing-in-python at lists.idyll.org>
>>>         http://lists.idyll.org/listinfo/testing-in-python
>>>         <http://lists.idyll.org/listinfo/testing-in-python>
>>         _______________________________________________
>>         testing-in-python mailing list
>>         testing-in-python at lists.idyll.org
>>         <mailto:testing-in-python at lists.idyll.org>
>>         http://lists.idyll.org/listinfo/testing-in-python
>>         <http://lists.idyll.org/listinfo/testing-in-python> 
>>
>>     _______________________________________________
>>     testing-in-python mailing list
>>     testing-in-python at lists.idyll.org
>>     <mailto:testing-in-python at lists.idyll.org>
>>     http://lists.idyll.org/listinfo/testing-in-python
>>     <http://lists.idyll.org/listinfo/testing-in-python>
>     _______________________________________________ testing-in-python
>     mailing list testing-in-python at lists.idyll.org
>     <mailto:testing-in-python at lists.idyll.org>
>     http://lists.idyll.org/listinfo/testing-in-python
>     <http://lists.idyll.org/listinfo/testing-in-python> 
>
> _______________________________________________
> testing-in-python mailing list
> testing-in-python at lists.idyll.org
> http://lists.idyll.org/listinfo/testing-in-python
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.idyll.org/pipermail/testing-in-python/attachments/20161018/b9f5787b/attachment-0001.htm>


More information about the testing-in-python mailing list