2016-09-21 2 views
0

Ich habe einen Testfall, der eine Strömung in einem API-Tests (verwendet requests.Session() und mehrere Anrufe zu unserem Backend macht.)Was kann dazu führen, dass dieses Unicode-Objekt in nosetests lib nicht aufrufbar ist?

Dieser Testfall geht auf meinem Mac und anderen Völkern macs. Aber wenn es in Jenkins ausgeführt wird, bekomme ich einen Fehler. Es gibt andere ähnliche Testfälle wie diese, die ohne Probleme in Jenkins bestehen. Leider kann ich den Testcode nicht selbst teilen.

Jenkins läuft auf Ubuntu 14.04

Aber hier sind erste Zeilen des Testcodes, wenn es hilft.

# filename: test_payment_visa.py 

import unittest 
from tests.utils import WWHTTPClient 
import math 
from nose.plugins.attrib import attr 


class TestPaymentWorkflow(unittest.TestCase): 
    def setUp(self): 
     self.ww_api = WWHTTPClient() 

    def test_payment_visa(self): 
     """Test for Payment Workflow via VISA""" 

Hat jemand eine Idee, was damit verbunden werden kann?

Traceback (most recent call last): 
    File "/var/lib/jenkins/.virtualenvs/api-tests/bin/nosetests", line 11, in <module> 
    sys.exit(run_exit()) 
    File "/var/lib/jenkins/.virtualenvs/api-tests/local/lib/python2.7/site-packages/nose/core.py", line 121, in __init__ 
    **extra_args) 
    File "/usr/lib/python2.7/unittest/main.py", line 95, in __init__ 
    self.runTests() 
    File "/var/lib/jenkins/.virtualenvs/api-tests/local/lib/python2.7/site-packages/nose/core.py", line 207, in runTests 
    result = self.testRunner.run(self.test) 
    File "/var/lib/jenkins/.virtualenvs/api-tests/local/lib/python2.7/site-packages/nose/core.py", line 62, in run 
    test(result) 
    File "/var/lib/jenkins/.virtualenvs/api-tests/local/lib/python2.7/site-packages/nose/suite.py", line 177, in __call__ 
    return self.run(*arg, **kw) 
    File "/var/lib/jenkins/.virtualenvs/api-tests/local/lib/python2.7/site-packages/nose/suite.py", line 224, in run 
    test(orig) 
    File "/usr/lib/python2.7/unittest/suite.py", line 70, in __call__ 
    return self.run(*args, **kwds) 
    File "/var/lib/jenkins/.virtualenvs/api-tests/local/lib/python2.7/site-packages/nose/suite.py", line 75, in run 
    test(result) 
    File "/var/lib/jenkins/.virtualenvs/api-tests/local/lib/python2.7/site-packages/nose/suite.py", line 177, in __call__ 
    return self.run(*arg, **kw) 
    File "/var/lib/jenkins/.virtualenvs/api-tests/local/lib/python2.7/site-packages/nose/suite.py", line 224, in run 
    test(orig) 
    File "/var/lib/jenkins/.virtualenvs/api-tests/local/lib/python2.7/site-packages/nose/suite.py", line 177, in __call__ 
    return self.run(*arg, **kw) 
    File "/var/lib/jenkins/.virtualenvs/api-tests/local/lib/python2.7/site-packages/nose/suite.py", line 224, in run 
    test(orig) 
    File "/var/lib/jenkins/.virtualenvs/api-tests/local/lib/python2.7/site-packages/nose/suite.py", line 177, in __call__ 
    return self.run(*arg, **kw) 
    File "/var/lib/jenkins/.virtualenvs/api-tests/local/lib/python2.7/site-packages/nose/suite.py", line 224, in run 
    test(orig) 
    File "/var/lib/jenkins/.virtualenvs/api-tests/local/lib/python2.7/site-packages/nose/case.py", line 45, in __call__ 
    return self.run(*arg, **kwarg) 
    File "/var/lib/jenkins/.virtualenvs/api-tests/local/lib/python2.7/site-packages/nose/case.py", line 138, in run 
    result.addError(self, err) 
    File "/var/lib/jenkins/.virtualenvs/api-tests/local/lib/python2.7/site-packages/nose/proxy.py", line 131, in addError 
    plugins.addError(self.test, err) 
    File "/var/lib/jenkins/.virtualenvs/api-tests/local/lib/python2.7/site-packages/nose/plugins/manager.py", line 99, in __call__ 
    return self.call(*arg, **kw) 
    File "/var/lib/jenkins/.virtualenvs/api-tests/local/lib/python2.7/site-packages/nose/plugins/manager.py", line 167, in simple 
    result = meth(*arg, **kw) 
    File "/var/lib/jenkins/.virtualenvs/api-tests/local/lib/python2.7/site-packages/nose/plugins/xunit.py", line 288, in addError 
    id = test.id() 
    File "/var/lib/jenkins/.virtualenvs/api-tests/local/lib/python2.7/site-packages/nose/case.py", line 85, in id 
    return self.test.id() 
TypeError: 'unicode' object is not callable 
+0

Sie bieten nicht genügend Kontext zum Beantworten. Die Fehlermeldung besagt jedoch grundsätzlich, dass Sie eine Zeichenfolge irgendwo behandeln, als ob sie eine Methode oder Funktion wäre. –

+0

Ich habe erwartet, dass das Problem nicht in dem Code ist, den ich geschrieben habe. Der Fehler ist in /site-packages/nose/case.py Zeile 85 in der Methode, die versucht, eine Beschreibung des Testfalls zu erhalten. Und dieser Fehler erscheint nicht auf meinem lokalen Rechner. – raitisd

Antwort

0

Also gab es ein Problem mit meinem Code.

benutzte ich eine Erklärung self.id = r.json()["orders"][0]["id"]

# filename: test_payment_visa.py 

import unittest 
from tests.utils import WWHTTPClient 
import math 
from nose.plugins.attrib import attr 


class TestPaymentWorkflow(unittest.TestCase): 
    def setUp(self): 
     self.ww_api = WWHTTPClient() 

    def test_payment_visa(self): 
     """Test for Payment Workflow via VISA"""  
     ... 
     ... 
     self.id = r.json()["orders"][0]["id"] 
     ... 
     ... 

Problem ist, dass unittest.TestCase cla ein Verfahren id genannt hat.

def id(self): 
    """Get a short(er) description of the test 
    """ 
    return self.test.id() 

Also gehe ich davon aus, dass ich während der Testlauf self.id auf einen Unicode-String gesetzt und dann nosetests versucht, seine id Methode aufrufen und TypeError: 'unicode' object is not callable Ausnahme erhält.

Verwandte Themen