2016-09-21 3 views
0

У меня есть тест, который проверяет некоторый поток в API (использует requests.Session() и делает несколько вызовов нашего внутреннего интерфейса.)Что может привести к тому, что этот объект unicode не является вызываемой ошибкой в ​​nosetests lib?

Этот тест проходит на мой макинтош и на других Маках народов. Но когда он выполняется в Дженкинсе, я получаю сообщение об ошибке. Есть и другие подобные тесты, подобные этим, которые проходят без проблем в Дженкинсе. К сожалению, я не могу поделиться самим тестовым кодом.

Дженкинс работает на Ubuntu 14.04

Но вот первые строки тестового кода, если это помогает.

# 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""" 

У кого-нибудь есть идея, к чему это может быть связано?

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

Вы не предоставляете достаточно контекста для ответа. Но сообщение об ошибке в основном указывает, что где-то вы обрабатываете строку, как если бы это был метод или функция. –

+0

Я ожидал, что проблема не в коде, который я написал. Ошибка находится в /site-packages/nose/case.py строке 85 в методе, который пытается получить описание тестового примера. И эта ошибка не появляется на моей локальной машине. – raitisd

ответ

0

Так что возникла проблема с моим кодом.

Я использовал заявление 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"] 
     ... 
     ... 

Проблема заключается в том, что unittest.TestCase CLAS имеет метод id.

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

Так я полагаю, что во время теста я установил self.id в строку Юникода, а затем nosetests пытается вызвать метод id и получает TypeError: 'unicode' object is not callable исключение.

Смежные вопросы