Python Can';t在Pytest上使用ActiveMQ侦听器捕获事件

Python Can';t在Pytest上使用ActiveMQ侦听器捕获事件,python,activemq,pytest,Python,Activemq,Pytest,我正在尝试编写一个测试用例,以查看我的操作是否被传输到ActiveMQ主题中。 我在pytest之外检查我的代码,不知何故代码运行平稳,我可以看到我的消息生成了一个关于ActiveMQ主题的事件。但是如果我在pytest用例中运行它,我就无法捕获事件。我似乎找不到理由。我们正在设置接收器,但如果使用pytest,则不会得到标题列表。外部测试工作正常 不带pytest的版本: import messenger import client import time import amq_client

我正在尝试编写一个测试用例,以查看我的操作是否被传输到ActiveMQ主题中。 我在pytest之外检查我的代码,不知何故代码运行平稳,我可以看到我的消息生成了一个关于ActiveMQ主题的事件。但是如果我在pytest用例中运行它,我就无法捕获事件。我似乎找不到理由。我们正在设置接收器,但如果使用pytest,则不会得到标题列表。外部测试工作正常

不带pytest的版本:

import messenger
import client
import time
import amq_client as aq

lst=aq.MyListener(aq.conn)
aq.conn.set_listener('', lst)
aq.conn.start()
aq.conn.connect(login=aq.user, passcode=aq.password)
aq.conn.subscribe(destination=aq.destination, ack='auto', id=1234)
print("Waiting for messages...")

resp=messenger.Messenger().send_message()
print(resp)
lognum=resp[1].split("=")[1]
time.sleep(10)

actions = [x['ENTITY_ACTION'] for x in lst.header_list]
accounts = [x['ACCOUNT'] for x in lst.header_list]

print('actions ', actions)
print('    ')
print('    ')
print('    ')
print('    ')
print('ACCOUNTS', accounts)


if(str(lognum) in accounts and 'NEW_ACCOUNT' in actions ):
    print('By this it WORKS')
输出:

actions ['NEW_ACCOUNT', 'ACCOUNT_GROUP_CHANGED']




ACCOUNTS ['720308353', '720308353']
By this it WORKS
Pytest版本:

import pytest
import messenger
import amq_client as aq
import time

class Test_AmqTestCase(object):

    def test_newaccount(self):
        lst=aq.MyListener(aq.conn)
        aq.conn.set_listener('', lst)
        aq.conn.start()
        aq.conn.connect(login=aq.user, passcode=aq.password)
        aq.conn.subscribe(destination=aq.destination, ack='auto', id=1234)
        print("Waiting for messages...")

        resp=messenger.Messenger().send_message()
        print(resp)
        lognum=resp[1].split("=")[1]

        t_end=time.time()+30
        t_start=time.time()
        while time.time() < t_end:
            time.sleep(1)
            t_total=time.time()-t_start

        print('Total time for event occur :', t_total)
        print('    ')

        actions = [x['ENTITY_ACTION'] for x in lst.header_list]
        accounts = [x['ACCOUNT'] for x in lst.header_list]

        print('ACCOUNTS', accounts)
        assert (str(lognum) in accounts and 'NEW_ACCOUNT' in actions)

你有没有在一个新的话题上尝试Pytest版本?若并没有,你们能试着检查一下你们是否得到了同样的问题吗?在新的主题上,pytest也不阅读。如果在pytest中运行,则无法获取标题或消息正文。
assert (str(lognum) in accounts and 'NEW_ACCOUNT' in actions)
E       AssertionError: assert ('720308351' in [])
E        +  where '720308351' = str('720308351')

Test_AmqCase.py:33: AssertionError
---------------------------- Captured stdout call -----------------------------
Waiting for messages...
['OK', 'LOGIN=720308351', 'end', '']
Total time for event occur : 30.017589569091797

ACCOUNTS []