Tôi có một bộ thử nghiệm được thực thi như một phần của một khung công tác xây dựng lớn hơn, được viết bằng Python. Một số bài kiểm tra yêu cầu tham số, mà tôi muốn vượt qua bằng cách sử dụng các biến môi trường.khuôn khổ nosetests: làm thế nào để vượt qua các biến môi trường để kiểm tra của tôi?
Dường như vận động viên nosetests có thông số env
, thực hiện những gì tôi muốn, according to the documentation. Có vẻ như, tuy nhiên, nó không hoạt động như ý nghĩ?
Dưới đây là một kịch bản thử nghiệm tối thiểu mà tiêu biểu cho vấn đề:
#!/usr/bin/env python
# pip install nose
import os, nose, unittest
class Test(unittest.TestCase):
def test_env(self):
self.assertEquals(os.environ.get('HELLO'), 'WORLD')
if __name__ == '__main__':
nose.run(env={'HELLO': 'WORLD'})
Các khẳng định thất bại, bởi vì các tham số env
không có được thông qua để thử nghiệm. Có ai biết tại sao không?
NB: Tôi làm việc xung quanh vấn đề bằng cách tung ra các công cụ giao diện điều khiển nosetests
:
#!/usr/bin/env python
import sys, os, nose, unittest, subprocess
class Test(unittest.TestCase):
def test_env(self):
self.assertEquals(os.environ.get('HELLO'), 'WORLD')
if __name__ == '__main__':
subprocess.Popen(['nosetests', sys.argv[0]],
env={'HELLO': 'WORLD'}).wait()
Tuy nhiên, điều này cảm thấy như một kludge, và tôi vẫn muốn được quan tâm trong việc học để sử dụng đúng cách nose.run()
.
Bạn sẽ vẫn phải khôi phục lại tình cũ 'os.environ 'nếu bạn đang làm điều gì đó khác sau khi thử nghiệm chạy, nhưng đây là cái gì đó có thể được tính vào một phương pháp, tôi đoán vậy. Tôi sẽ chấp nhận điều này như một câu trả lời. – Mihai