मैं नकली वस्तुओं के साथ परीक्षण मामलों को लिखने के लिए Google App Engine testbed
ढांचे का उपयोग कर रहा हूं। यह here दस्तावेज है। मुझे अपने डेटास्टोर परीक्षणों को नकली डेटाबेस (Testbed.init_datastore_v3_stub
) का उपयोग करके अच्छी तरह से काम कर रहा है, और इससे मेरे टेस्ट केस एक तेज़, ताजा डेटाबेस पर चलने देते हैं जो प्रत्येक टेस्ट केस के लिए पुनः आरंभ किया जाता है। अब मैं कार्यक्षमता का परीक्षण करना चाहता हूं जो वर्तमान उपयोगकर्ता पर निर्भर करता है।आप ऐप इंजन में उपयोगकर्ता सेवा का नकल कैसे करते हैं?
Testbed.init_user_stub
नामक एक और टेस्टबैक सेवा है, जिसे मैं "नकली" उपयोगकर्ता सेवा प्राप्त करने के लिए सक्रिय कर सकता हूं। दुर्भाग्यवश, इस के लिए कोई प्रलेखन प्रतीत नहीं होता है। मैं सक्रिय करने और इस तरह यह उपयोग कर रहा हूँ:
import unittest
from google.appengine.ext import testbed
from google.appengine.api import users
class MyTest(unittest.TestCase):
def setUp(self):
self.testbed = testbed.Testbed()
self.testbed.activate()
self.testbed.init_user_stub()
def testUser(self):
u = users.get_current_user()
self.assertNotEqual(u, None)
समस्या यह है कि मैं किसी भी तरह एक "नकली" उपयोगकर्ता को प्रमाणित करने के लिए "नकली" उपयोगकर्ता सेवा बताने के लिए नहीं मिला है है। ताकि परीक्षण चल रहा है, मैं (जाहिर) अर्थ नकली उपयोगकर्ता सेवा मेरे ऐप कि वर्तमान उपयोगकर्ता प्रवेश न होने पर कह रहा है मिल
AssertionError: None == None
। मैं कैसे नाटक करने के लिए है कि एक उपयोगकर्ता लॉग ऑन है नकली उपयोगकर्ता सेवा बता सकते हैं में? आदर्श रूप से, मैं नकली उपयोगकर्ता का उपनाम, ईमेल, user_id निर्दिष्ट करने में सक्षम होना चाहता हूं और चाहे वे एक व्यवस्थापक हों या नहीं। ऐसा लगता है कि यह एक सामान्य बात है (क्योंकि आपको यह जांचने की ज़रूरत है कि ऐप कैसे व्यवहार करता है जब कोई) कोई भी लॉग इन नहीं होता है, बी) कोई उपयोगकर्ता लॉग इन होता है, और सी) एक व्यवस्थापक लॉग इन होता है), लेकिन गुगलिंग "init_user_stub" लगभग कुछ भी नहीं देता है।
नोट:
if __name__ == '__main__':
unittest.main()
इस मूल रूप से सही विचार है। सिवाय इसके कि आप 'os.environ'' के बजाय ['testbed.setup_env()'] (http://code.google.com/appengine/docs/python/tools/localunittesting.html#Changing_the_Default_Environment_Variables) का उपयोग करना चाहते हैं। – ryan
मैं इसे कम कर रहा हूं क्योंकि ** यह पर्यावरण को प्रदूषित कर रहा है **। यह ध्यान दिया जाना चाहिए कि एक सफाई की आवश्यकता है। यह टेरीबेड का उपयोग करके किया जा सकता है @ एरियन ने कहा। – siebz0r