Hi Shujie, Is the web application "Testlink" by any chance (the ID sure do look like TL id's)? If so, we have a pytest plugin we have been using internally for a couple of year already and I should be able to get (internal) permission to release it (it is thoroughly documented).
Otherwise, what Holger is suggesting is the approach we have taken for our implementation (we have a pytest.testlink marker for that purpose). Best /Laurent On 5/22/13 11:01 AM, "holger krekel" <[email protected]> wrote: >Hi Shujie, > >On Wed, May 22, 2013 at 13:29 -0400, Liao, Shujie wrote: >> Hi, >> >> We want to update the test result automatically from pytest to a web >>application, we run pytest from Jenkins currently , and our plan is to >>run a script as post step to make this happen. >> >> We have thousands of test cases in an excel file, and now they were all >>imported to the web tool(the tool generated a unique id for each test), >>the problem is, the test name in web tool and from pytest are not >>exactly the same, and so far we don't have plan as well as hands to make >>them the same.... >> >> Our thoughts is to pass the test id to each pytest test case, so that >>from output result, the id becomes part of test name, then we have the >>map from pytest test cases to the web tool. >> >> We are looking for a feature from pytest, which can help achieve >>following requirements: >> >> 1. Can easily inject an external id to each test case, both >>non-parameterized and parameterized test. >> >> 2. The injected id will be part of test name in output >> >> 3. Without impacting existing parameterized mechanism (or need >>minor modification is fine) >> >> For parameterized test, I tried to use >>@pytest.mark.parametrize(('name'),create_data,ids=['DEMO-1','DEMO-2']), >>of them, "DEMO-1" and "DEMO-2" are ids from the test cases in web tool, >>I got this as output: >> >> >> platform linux2 -- Python 2.7.3 -- pytest-2.3.4 >> collected 2 items >> <Module 'test_demo.py'> >> <Class 'TestDemo'> >> <Instance '()'> >> <Function 'test_generatekeypair[DEMO-1]'> >> <Function 'test_generatekeypair[DEMO-2]'> >> >> However, for non-parameterized test, seems this solution is less >>decent, although we can pass the parameter without using it, still seems >>ugly... >> >> >> >> Is there a better way we can do this? > >It all depends a bit but you might look into marking your tests like >this:: > > # content of test_file.py > > import pytest > > @pytest.mark.id("demo1") > def test_hello(): > pass > > @pytest.mark.id("demo2") > def test_world(): > pass > > >and then implementing a hook which transfers the marks as part of the >test id: > > # content of conftest.py > > def pytest_collection_modifyitems(items): > for item in items: > id = item.keywords.get("id", None) > if id is not None and getattr(id, "args", None): > item.name += "[%s]" % id.args[0] > >which when run gives this: > > $ py.test -v test_file.py > > test_file.py:4: test_hello[demo1] PASSED > test_file.py:8: test_world[demo2] PASSED > >Of course, you could also have a different way to configure >the names in the conftest hook, e.g. by reading a file which >maps test ids to names or so. > >HTH, >holger > > > >> >> >> The information contained in this electronic mail transmission >> may be privileged and confidential, and therefore, protected >> from disclosure. If you have received this communication in >> error, please notify us immediately by replying to this >> message and deleting it from your computer without copying >> or disclosing it. >> >> > >> _______________________________________________ >> Pytest-dev mailing list >> [email protected] >> http://mail.python.org/mailman/listinfo/pytest-dev > >_______________________________________________ >Pytest-dev mailing list >[email protected] >http://mail.python.org/mailman/listinfo/pytest-dev _______________________________________________ Pytest-dev mailing list [email protected] http://mail.python.org/mailman/listinfo/pytest-dev
