2017-02-25 10 views
0

없이 대 monkeyrunner와 유닛 테스트에 파이썬을 사용하여 나는이 있습니다monkeyrunner

import unittest 
import sys, os 
sys.path.append(os.path.dirname(sys.argv[0])) 

class TestStringMethods(unittest.TestCase): 

     @classmethod  
     def setUpClass(cls): 
      cls.g = "def" 
      print cls 

     def test_upper(self): 
      self.assertEqual('DeF'.lower(), TestStringMethods.g) 
if __name__ == '__main__': 
    unittest.main() 

을이

python test.py

을 제공합니다

python screen_test.py 
<class '__main__.TestStringMethods'> 
. 
---------------------------------------------------------------------- 
Ran 1 test in 0.001s 

OK 

그러나,이 :

monkeyrunner "%CD%\test.py" 

을 제공합니다

E 
====================================================================== 
ERROR: test_upper (__main__.TestStringMethods) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "C:\Users\abc\def\ghi\jkl\test.py", line 29, in test_upper 
    self.assertEqual('DeF'.lower(), TestStringMethods.g) 
AttributeError: type object 'TestStringMethods' has no attribute 'g' 

---------------------------------------------------------------------- 
Ran 1 test in 0.024s 

FAILED (errors=1) 

왜 동일한 테스트가 monkeyrunner 실행 실패하면?

도대체 어디서 오는거야 E?

답변

1

이미 알 수 있듯이 monkeyrunnersetUpClass 메서드를 실행하고 있지 않기 때문입니다.

monkeyrunner의 대체품으로 AndroidViewClient/culebra을 사용할 수 있습니다.이 도구는 python 2.x와 함께 실행되므로 테스트가 올바르게 초기화됩니다.

또한 culebra -U은 자동으로 테스트를 생성 할 수 있으며이를 사용자 정의 할 수 있습니다.

이 생성 된 시험에서 니펫 (명확성을 위해 제거 된 일부 라인)

#! /usr/bin/env python 
# ...  
import unittest 

from com.dtmilano.android.viewclient import ViewClient, CulebraTestCase 

TAG = 'CULEBRA' 


class CulebraTests(CulebraTestCase): 

    @classmethod 
    def setUpClass(cls): 
     # ... 
     cls.sleep = 5 

    def setUp(self): 
     super(CulebraTests, self).setUp() 

    def tearDown(self): 
     super(CulebraTests, self).tearDown() 

    def preconditions(self): 
     if not super(CulebraTests, self).preconditions(): 
      return False 
     return True 

    def testSomething(self): 
     if not self.preconditions(): 
      self.fail('Preconditions failed') 

     _s = CulebraTests.sleep 
     _v = CulebraTests.verbose 

     ## your test code here ## 



if __name__ == '__main__': 
    CulebraTests.main() 

CulebraTestCase 명령 행 옵션을 처리하는 adb 사용 가능한 장치와 접속 테스트, 무거운를 제공

+0

하지만 monkeyrunner가 setUpClass() 메소드를 호출하지 않는 이유는 무엇입니까? – abc

+0

아마도 장식을 무시하고있을 것입니다. –