[TIP] (no subject)
dpb dpb
dpb.mediamath at gmail.com
Sun Mar 29 01:59:09 PDT 2015
Sorry, I hit send too soon. Though it's not essential to the question, the
second program should read:
# display_class_attributes.py
> """Test the setting of class attributes."""
> class TestExample():
> def __init__(self):
> self.attribute = 1
> def test_changing_attr(self):
> """Change attribute on object."""
> self.attribute = 2
> print('self.attribute == 2:', self.attribute == 2)
> def test_attr_is_changed(self):
> """Assume attribute is changed."""
> print('self.attribute == 2:', self.attribute == 2)
> def test_attr_is_unchanged(self):
> """Assume attribute is unchanged."""
> print('self.attribute == 1:', self.attribute == 1)
> t = TestExample()
> t.test_changing_attr()
> t.test_attr_is_changed()
> t.test_attr_is_unchanged()
Output:
$ python display_class_attributes.py
> self.attribute == 2: True
> self.attribute == 2: True
> self.attribute == 1: False
> $
- dpb
On Sun, Mar 29, 2015 at 4:57 AM, dpb dpb <dpb.mediamath at gmail.com> wrote:
> Something I do not see addressed explicitly in the Pytest docs is this
> behavior: Unlike normal class writing in Python 3, changing the value of a
> class attribute in one function does not leave it changed in test functions
> that are called subsequently:
>
> # test_pytest_class_attributes.py
>> """Test the setting of class attributes."""
>> class TestExample():
>> def setup(self):
>> self.attribute = 1
>
>
>> def test_changing_attr(self):
>> """Change attribute on object."""
>> self.attribute = 2
>> assert self.attribute == 2
>
>
>> def test_attr_is_changed(self):
>> """Assume attribute is changed."""
>> assert self.attribute == 2
>
>
>> def test_attr_is_unchanged(self):
>> """Assume attribute is unchanged."""
>> assert self.attribute == 1
>
>
> Output:
>
> $ py.test test_pytest_class_attributes.py -v
>> ============================= test session starts
>> ==============================
>> platform darwin -- Python 3.4.1 -- py-1.4.25 -- pytest-2.6.3 --
>> /Users/dpb/py34/bin/python3.4
>> collected 3 items
>> test_pytest_class_attributes.py::TestExample::test_changing_attr PASSED
>> test_pytest_class_attributes.py::TestExample::test_attr_is_changed FAILED
>> test_pytest_class_attributes.py::TestExample::test_attr_is_unchanged
>> PASSED
>> =================================== FAILURES
>> ===================================
>> _______________________ TestExample.test_attr_is_changed
>> _______________________
>> self = <test_pytest_class_attributes.TestExample object at 0x10dd98ef0>
>> def test_attr_is_changed(self):
>> """Test whether attribute is changed."""
>> > assert self.attribute == 2
>> E assert 1 == 2
>> E + where 1 = <test_pytest_class_attributes.TestExample object at
>> 0x10dd98ef0>.attribute
>
>
>
> test_pytest_class_attributes.py:14: AssertionError
>> ====================== 1 failed, 2 passed in 0.02 seconds
>> ======================
>> $
>
>
> Is there special syntax or some special structure to make class attributes
> behave In Pytest as they do in an ordinary Python class? Example:
>
> # display_class_attributes.py
>> """Test the setting of class attributes."""
>
>
>> class TestExample():
>> def __init__(self):
>> self.attribute = 1
>
>
>> def test_changing_attr(self):
>> """Change attribute on object."""
>> self.attribute = 2
>> assert self.attribute == 2
>> print('Finished test_changing_attr.\n')
>
>
>> def test_attr_is_changed(self):
>> """Test whether attribute is changed."""
>> assert self.attribute == 2
>> print('Finished test_attr_is_changed.\n')
>
>
>> def test_attr_is_unchanged(self):
>> """Test whether attribute is unchanged."""
>> assert self.attribute == 1
>> print('Finiahed test_attr_is_unchanged.\n')
>
>
>> t = TestExample()
>> t.test_changing_attr()
>> t.test_attr_is_changed()
>> t.test_attr_is_unchanged()
>
>
> Output:
>
> > $ python display_class_attributes.py
> >
> > self.attribute == 2: True
> >
> > self.attribute == 2: True
> >
> > self.attribute == 1: False
> >
> > $
>
> Thanks.
>
> - dpb
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.idyll.org/pipermail/testing-in-python/attachments/20150329/40ec0c6b/attachment-0001.htm>
More information about the testing-in-python
mailing list