2013-10-15 35 views
1

即时通讯新的测试,所以也许我在这里做错了什么。py.test只能找到5个项目,但我的班级更多

我刚开始为我的项目编写一些测试,一切都很顺利,直到py.test停止识别我写的更多测试。

我的意思是说,有超过5个defs,但每次运行它时,它只检查5个项目。

任何想法为什么?

py.test

[[email protected] tests]$ py.test-2.7 
test session starts 
platform linux2 -- Python 2.7.5 -- pytest-2.4.2 
collected 5 items 

gitlab_test.py ..... 
5 passed in 3.37 seconds 

使用setup.py方法

[[email protected] i-python-gitlab]$ python2 setup.py test 
running test 
running egg_info 
writing requirements to pyapi_gitlab.egg-info/requires.txt 
writing pyapi_gitlab.egg-info/PKG-INFO 
writing top-level names to pyapi_gitlab.egg-info/top_level.txt 
writing dependency_links to pyapi_gitlab.egg-info/dependency_links.txt 
reading manifest file 'pyapi_gitlab.egg-info/SOURCES.txt' 
writing manifest file 'pyapi_gitlab.egg-info/SOURCES.txt' 
running build_ext 
testbadlogin (tests.gitlab_test.GitlabTest) ... ok 
testcurrentuser (tests.gitlab_test.GitlabTest) ... ok 
testgetusers (tests.gitlab_test.GitlabTest) ... ok 
testlogin (tests.gitlab_test.GitlabTest) ... ok 
testsshkeys (tests.gitlab_test.GitlabTest) ... ok 

---------------------------------------------------------------------- 
Ran 5 tests in 3.070s 

OK 

代码

import unittest 
import gitlab 

user = "" 
password = "" 
host = "" 
key = "" 
git = gitlab.Gitlab(host=host, user=user) 


class GitlabTest(unittest.TestCase): 
    def testlogin(self): 
     """ 
     Test to see if login works with proper credentials 
     """ 
     self.assertTrue(git.login(user=user, password=password)) 

    def testbadlogin(self): 
     """ 
     Test to see if login fails with no credentials 
     """ 
     self.assertFalse(git.login("", "")) 

    def testgetusers(self): 
     git.login(user=user, password=password) 
     # get all users 
     assert isinstance(git.getusers(), list) # compatible with 2.6 
     self.assertTrue(git.getusers()) 
     # get X pages 
     assert isinstance(git.getusers(page=2), list) # compatible with 2.6 
     assert isinstance(git.getusers(per_page=4), list) # compatible with 2.6 
     self.assertEqual(git.getusers(page=800), list("")) # check against empty list 
     self.assertTrue(git.getusers(per_page=43)) # check against false 

    def testcurrentuser(self): 
     git.login(user=user, password=password) 
     assert isinstance(git.currentuser(), dict) # compatible with 2.6 
     self.assertTrue(git.currentuser()) 

    def addremoveuserstest(self): 
     git.login(user=user, password=password) 
     newuser = git.createuser("Test", "test", "123456", 
           "[email protected]", "skype", 
           "linkedin", "twitter", "25", 
           bio="bio") 
     assert isinstance(newuser, dict) 
     # this below doesn't really matter. Gilab always answers a 404 
     self.assertTrue(git.edituser(newuser['id'], twitter="tweeeeet", skype="Microsoft", username="Changed")) 
     self.assertTrue(git.deleteuser(newuser['id'])) 

    def testsshkeys(self): 
     git.login(user=user, password=password) 
     git.addsshkey(title="test key", key=key) 
     assert isinstance(git.getsshkeys(), list) # compatible with 2.6 
     # pass the id of the first key 
     assert isinstance(git.getsshkey(id_=git.getsshkeys()[0]['id']), dict) # compatible with 2.6 
     self.assertTrue(git.getsshkey(id_=git.getsshkeys()[0]['id'])) 
     self.assertTrue(git.deletesshkey(id_=git.getsshkeys()[0]['id'])) 
     self.assertTrue(git.addsshkey(title="test key", key=key)) 
     self.assertTrue(git.deletesshkey(id_=git.getsshkeys()[0]['id'])) 
     self.assertTrue(git.addsshkeyuser(id_=git.currentuser()['id'], title="tests key", key=key)) 
     self.assertTrue(git.deletesshkey(id_=git.getsshkeys()[0]['id'])) 

    def projecttest(self): 
     git.login(user=user, password=password) 
     # we won't test the creation of the project as there is no way of deleting it trougth the api 
     # so we would end with a million test projects. Next Gitlab version allows to delete projects 
     #self.assertTrue(git.createproject("Test-pyapy-gitlab")) 
     assert isinstance(git.getprojects(), list) 
     assert isinstance(git.getprojects(page=5), list) 
     assert isinstance(git.getprojects(per_page=7), list) 
     assert isinstance(git.getproject(git.getprojects()[0]['id']), dict) 
     self.assertFalse(git.getproject("wrong")) 
     assert isinstance(git.getprojectevents(git.getprojects()[0]['id']), list) 
     assert isinstance(git.getprojectevents(git.getprojects()[0]['id'], page=3), list) 
     assert isinstance(git.getprojectevents(git.getprojects()[0]['id'], per_page=4), list) 

回答

2

据我所知,它只会把这些方法作为有名字开始实际测试与“测试”(通常,你会发现人们使用“test_”为了清晰)。本着这种精神重命名“projecttest”和“addremoveuserstest”应该有所帮助。 (对于此行为,另请参见http://docs.python.org/dev/library/unittest.html。)

+0

非常感谢!就是这样,我甚至没有注意到! – Itxaka

相关问题