123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- # coding=utf-8
- import os
- import sys
- import time
- import simplejson
- PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..')
- sys.path.insert(0, PROJECT_ROOT)
- os.environ.update({"DJANGO_SETTINGS_MODULE": "configs.testing"})
- import django
- django.setup()
- from apps.web.device.models import Device
- from apps.web.user.models import MyUser
- from apps.web.dealer.models import Dealer
- from apps.web.core.exceptions import ServiceException
- module = globals()
- class JNCarTest(object):
- def __init__(self, devNo, openId, cardNo=None):
- self._devNo = devNo
- self._openId = openId
- self._cardNo = cardNo
- @property
- def device(self):
- device = getattr(self, "_device", None)
- if not device:
- setattr(self, "_device", Device.objects.get(devNo=self._devNo))
- device = getattr(self, "_device")
- return device
- @property
- def user(self):
- return MyUser.objects.filter(groupId=self.device.groupId, openId=self._openId).first()
- @staticmethod
- def get_view_func(app, funcName):
- myApps = __import__("apps.web.{}.views".format(app))
- func = eval("myApps.web.{}.views.{}".format(app, funcName))
- return func
- def test_start(self):
- beforePay = float(str(self.user.balance))
- packageId = "1"
- package = self.device.washConfig.get(packageId)
- payMoney = float(package.get("coins"))
- payload = {
- "groupId": self.device.groupId,
- "devNo": self._devNo,
- "packageId": packageId,
- "attachParas": {
- "chargeIndex": 1,
- "startKey": str(time.time()).replace(".", "")
- }
- }
- request = UserRequest(payload)
- request._init_request(
- openId=self._openId,
- groupId=self.device.groupId
- )
- func = self.get_view_func("user", "startAction")
- try:
- func(request)
- except ServiceException as e:
- print "启动失败, {}".format(e.result.get("description"))
- return
- afterPay = float(str(self.user.balance))
- # 金额是否扣除
- assert beforePay - afterPay == payMoney, "pay money error!!!"
- devCache = Device.get_dev_control_cache(self._devNo)
- assert devCache.get("status") == 1, "device status error!!!"
- class MyRequest(object):
- # 伪造django 的 http request
- def __init__(self, payload):
- self._body = payload
- def _init_request(self, **kwargs):
- pass
- @property
- def body(self):
- return simplejson.dumps(self._body)
- class UserRequest(MyRequest):
- def _init_request(self, **kwargs):
- self._openId = kwargs.pop("openId")
- self._groupId = kwargs.pop("groupId")
- @property
- def user(self):
- openId = getattr(self, "_openId", "")
- groupId = getattr(self, "_groupId", "")
- return MyUser.objects.filter(groupId=groupId, openId=openId).first()
- class DealerRequest(MyRequest):
- def _init_request(self, **kwargs):
- self._username = kwargs.pop("username")
- @property
- def user(self):
- username = getattr(self, "_username", "")
- return Dealer.objects.filter(username=username).first()
- JNCarTest("860344043047092", "o-VzzwF5B18nOA4FvJjtxoto_yEw").test_start()
|