| Summary: | nitrate.TestCase(**hash) doesn't respect 'arguments ' | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Lukáš Zachar <lzachar> | ||||
| Component: | python-nitrate | Assignee: | Petr Šplíchal <psplicha> | ||||
| Status: | CLOSED ERRATA | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||
| Severity: | medium | Docs Contact: | |||||
| Priority: | medium | ||||||
| Version: | rawhide | CC: | lzachar, ohudlick, psplicha | ||||
| Target Milestone: | --- | ||||||
| Target Release: | --- | ||||||
| Hardware: | Unspecified | ||||||
| OS: | Unspecified | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | python-nitrate-1.0-0.fc20 | Doc Type: | Bug Fix | ||||
| Doc Text: | Story Points: | --- | |||||
| Clone Of: | Environment: | ||||||
| Last Closed: | 2014-05-18 22:53:47 UTC | Type: | Bug | ||||
| Regression: | --- | Mount Type: | --- | ||||
| Documentation: | --- | CRM: | |||||
| Verified Versions: | Category: | --- | |||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||
| Attachments: |
|
||||||
|
Description
Lukáš Zachar
2013-11-19 20:25:26 UTC
You can initialize any python-nitrate object using the "inject"
(short for initial object dict). If you adhere to the format which
is sent by the server in xmlrpc calls I guess you should achieve
what you are looking for:
#!/usr/bin/python
import nitrate
inject = {'alias': None,
'arguments': 'X=3',
'attachment': [],
'author': 'shillman',
'author_id': 1472,
'case_id': 1234,
'case_status': 'CONFIRMED',
'case_status_id': 2,
'category': '--default--',
'category_id': 1,
'component': [],
'create_date': '2008-02-25 15:15:55',
'default_tester': 'user',
'default_tester_id': 1791,
'estimated_time': '00:00:30',
'extra_link': None,
'is_automated': 0,
'is_automated_proposed': False,
'notes': None,
'plan': [155],
'priority': 'P1',
'priority_id': 1,
'requirement': None,
'reviewer': None,
'reviewer_id': None,
'script': None,
'summary': 'Thunderbird: Writing new mail',
'tag': [],
}
case = nitrate.TestCase(inject)
print case.arguments
This seems to work just fine:
$ COLOR=0 CACHE=0 DEBUG=2 python inject.py
[DEBUG] Coloring disabled
[DEBUG] Caching on level 0
[DEBUG] Initializing test case TC#0001234
[DEBUG] Initializing CaseTags for TC#0001234 from the inset
[DEBUG] []
X=3
Does that resolve your use case?
Hi Petr,
Your example doesn't work for python-nitrate-0.9-0.
$ CACHE=0 DEBUG=2 python r.py
[DEBUG] Caching on level 0
[DEBUG] Coloring enabled
Traceback (most recent call last):
File "r.py", line 32, in <module>
case = nitrate.TestCase(inject)
File "/usr/lib/python2.7/site-packages/nitrate/api.py", line 3133, in __init__
Mutable.__init__(self, id, prefix="TC")
File "/usr/lib/python2.7/site-packages/nitrate/api.py", line 1564, in __init__
Nitrate.__init__(self, id, prefix)
File "/usr/lib/python2.7/site-packages/nitrate/api.py", line 479, in __init__
self._id = int(id)
TypeError: int() argument must be a string or a number, not 'dict'
Please, test with the latest packages from the testing repo: http://psss.fedorapeople.org/python-nitrate/testing/download/ Consistent use of the inject was implemented as part of the: > The Big Cleanup of Ininitialization and Caching > > Initialization check now handled in _is_initialized() > Cache indexing performed in common _index() method > Better string representation for incomplete objects > Consistent use of inject (initial object dictionary) > Fixed sleep/wake functionality for containers caching > Simplified _fetch() with injects and use of _index() > Many unit tests adjusted and improved for caching https://github.com/psss/python-nitrate/commit/0ff3145 Marking as MODIFIED, move back to ASSIGNED if it does not work as you would expect. Thanks. Hi, Sorry for the noise before. I've run it now with python-nitrate-0.11-0.el7. My use case is about creating new test case with as much attributes as possible in the constructor call (so I don't need to set them later in cycle). The 'arguments' field is still not set. Also the 'requirement'. Created attachment 872597 [details]
reproducer_2
New reproducer, which tries to set almost all fields accepted by TestCase.create call.
Output of the reproducer follows. There is some inconsistency between tcms and python-nitrate field names which IMHO should be kept as it is now (default_tester, estimated_time, extra_link, is_*) Container-like bug, plan, tag are expected to be different IMHO too. However fields setup/effect/breakdown/action are missing completely (RFE bug maybe?) $ python reproducer.py action ( do something ) --> !! AttributeError !! arguments ( THIS="is argument ) --> None breakdown ( in case of emergency break the glass ) --> !! AttributeError !! bug ( 1,2,3 ) --> !! AttributeError !! case_status ( CONFIRMED ) --> !! AttributeError !! category ( Sanity ) --> Sanity default_tester ( lzachar ) --> !! AttributeError !! effect ( something will happen ) --> !! AttributeError !! estimated_time ( 00:00:01 ) --> !! AttributeError !! extra_link ( http://localhost ) --> !! AttributeError !! is_automated ( 1 ) --> !! AttributeError !! is_automated_proposed ( 1 ) --> !! AttributeError !! plan ( [10769] ) --> !! AttributeError !! priority ( P2 ) --> P2 product ( RHEL Tests ) --> <class 'nitrate.api.NitrateNone'> requirement ( requirement1 and 2 ) --> script ( /nonexistent/script/path/ ) --> /nonexistent/script/path/ setup ( build a plane ) --> !! AttributeError !! summary ( some summary text ) --> some summary text tag ( tag1,tag2 ) --> !! AttributeError !! *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*--*-*-*-*-*-*-*-*-*-*-*-*-*-* arguments --> None author --> Lukas Zachar automated --> True autoproposed --> False bugs --> category --> Sanity components --> [None] created --> 2014-03-10 16:33:37 id --> 304481 identifier --> TC#0304481 link --> manual --> False notes --> priority --> P2 product --> <class 'nitrate.api.NitrateNone'> requirement --> script --> /nonexistent/script/path/ status --> PROPOSED summary --> some summary text synopsis --> TC#0304481 - some summary text (Sanity, P2, PROPOSED, 0 test plans) tags --> tester --> None testplans --> [None] time --> 00:00:00 I see, thanks for clarifying. I've fixed both "arguments" and
"requirement" (by mistake omitted from the _create() method).
https://github.com/psss/python-nitrate/commit/1c83e07
Regarding the setup/effect/breakdown/action fields: This is for a
separate RFE, low priority for now as it seems these fields are
not very useful for automated processing. Could be in the future.
python-nitrate-1.0-0.fc20 has been submitted as an update for Fedora 20. https://admin.fedoraproject.org/updates/python-nitrate-1.0-0.fc20 Package python-nitrate-1.0-0.fc20: * should fix your issue, * was pushed to the Fedora 20 testing repository, * should be available at your local mirror within two days. Update it with: # su -c 'yum update --enablerepo=updates-testing python-nitrate-1.0-0.fc20' as soon as you are able to. Please go to the following url: https://admin.fedoraproject.org/updates/FEDORA-2014-5095/python-nitrate-1.0-0.fc20 then log in and leave karma (feedback). python-nitrate-1.0-0.fc20 has been pushed to the Fedora 20 stable repository. If problems still persist, please make note of it in this bug report. |