मैंने फ्लास्क ऐप बनाया है जिसे डॉकर कंटेनर के अंदर चलाने के लिए डिज़ाइन किया गया है। यह पोस्ट HTTP विधियों को स्वीकार करें और उचित JSON प्रतिक्रिया लौटाएं यदि हेडर कुंजी उस कुंजी से मेल खाती है जिसे मैंने के अंदर रखा है। docker-compose environment.

...
    environment:
      - SECRET_KEY=fakekey123
...

समस्या यह है: जब परीक्षण की बात आती है। app या client की स्थिरता फ्लास्क (पाइटेस्ट) निश्चित रूप से डॉकर-कंपोज़ environment नहीं ढूंढ सकता। क्योंकि ऐप docker-compose से नहीं बल्कि pytest से शुरू हुआ था।

secret_key = os.environ.get("SECRET_KEY") 
# ^^ the key loaded to OS env by docker-compose
post_key = headers.get("X-Secret-Key")
...

if post_key == secret_key:
    RETURN APPROPRIATE RESPONSE
       .....

इस समस्या के लिए (सर्वोत्तम/अनुशंसित) दृष्टिकोण क्या है?

मुझे कुछ प्लगइन्स मिलते हैं एक, दो, ऐसा करने के लिए तीन। लेकिन मैंने यहां पूछा कि क्या कोई और "सरल"/"सामान्य" दृष्टिकोण है। क्योंकि मैं भी सीआई/सीडी टूल्स का उपयोग करके इस परीक्षण को स्वचालित करना चाहता हूं।

3
azzamsa 27 अगस्त 2019, 08:54

2 जवाब

सबसे बढ़िया उत्तर

मेरा वर्तमान समाधान ओएस पर्यावरण को पढ़ने वाले फ़ंक्शन का नकल करना है। OS ENV लोड हो जाता है यदि ऐप ने docker का उपयोग करना शुरू कर दिया है। परीक्षण के लिए इसे आसान बनाने के लिए, मैं बस उस फ़ंक्शन का मजाक उड़ाता हूं।

   def fake_secret_key(self):
        return "ffakefake11"

    def test_app(self, client):
        app.secret_key = self.fake_secret_key
        # ^^ real func   ^^ fake func

या कोई अन्य विकल्प pytest-env का उपयोग कर रहा है जैसा कि @bufh ने टिप्पणी में सुझाया है।

pytest.ini फ़ाइल बनाएं, फिर डालें:

[pytest]
env =
    APP_KEY=ffakefake11

-1
azzamsa 30 अगस्त 2019, 05:59

सबसे अधिक संभावना है कि आपको अपने कंटेनर के अंदर से py.test चलाने की आवश्यकता होगी। यदि आप स्थानीय रूप से चल रहे हैं, तो आपकी होस्ट मशीन क्या देख रही है और आपका कंटेनर क्या देख रहा है, के बीच एक विरोध होने जा रहा है।

तो विकल्प #1 docker exec का उपयोग करना होगा:

$ docker exec -it $containerid py.test

फिर विकल्प #2 आपके setup.py में एक स्क्रिप्ट या कार्य बनाना होगा ताकि आप एक सरल कमांड चला सकें जैसे:

$ python setup.py test
0
Holden Rehg 27 अगस्त 2019, 18:37