【发布时间】:2017-06-11 17:23:41
【问题描述】:
我正在尝试为烧瓶应用程序设置验收测试工具,目前我正在努力等待应用程序启动后再拨打电话。
以下构造工作正常:
class SpinUpTests(unittest.TestCase):
def tearDown(self):
super().tearDown()
self.stubby_server.kill()
self.stubby_server.communicate()
def test_given_not_yet_running_when_created_without_config_then_started_on_default_port(self):
self.not_yet_running(5000)
self.stubby_server = subprocess.Popen(['python', '../../app/StubbyServer.py'], stdout=subprocess.PIPE)
time.sleep(1)#<--- I would like to get rid of this
self.then_started_on_port(5000)
我想在标准输出上等待:
self.stubby_server = subprocess.Popen(['python', '../../app/StubbyServer.py'], stdout=subprocess.PIPE) time.sleep(1)#
- 在http://127.0.0.1:[port]/ 上运行(按 CTRL+C 退出)
我试过了
for line in self.stubby_server.stdout.readline()
但是readline() 永远不会完成,尽管我已经在测试输出窗口中看到了输出。
有什么想法可以等待烧瓶应用程序启动而无需使用明确的sleep()?
【问题讨论】:
-
啊,是的。我遇到了这个确切的问题。我的解决方案是实际使用retry,然后我会再次尝试我的电话,直到它在我设置的重试超时时间内工作。最终,我根据引发的异常继续重试。这解决了我的问题。
-
给你。我实际上在 GitHub 上有它。这应该可以解决问题:github.com/internap/fake-ubersmith/blob/…
-
使用 .read(1) 读取一个字符,然后将其与之前的字符串连接。如果读取了特殊字符,则在生成器中生成字符串,然后重置您的字符串。
-
@cmdLP 不幸的是
read(1)也没有返回任何内容:( -
也许用“and”关键字代替 time.sleep 加入表达式。 self.stubby_server = subp... 和 do_things()
标签: python python-3.x testing flask python-3.6