Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

helpers.py 2.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import twill
  2. from StringIO import StringIO
  3. from django.test import TestCase
  4. from django.core.servers.basehttp import AdminMediaHandler
  5. from django.core.handlers.wsgi import WSGIHandler
  6. from django.core.urlresolvers import reverse
  7. from oscar.apps.catalogue.models import ProductClass, Product
  8. from oscar.apps.partner.models import Partner, StockRecord
  9. def create_product(price=None, title="Dummy title", product_class="Dummy item class",
  10. partner="Dummy partner", upc="dummy_101", num_in_stock=10):
  11. """
  12. Helper method for creating products that are used in tests.
  13. """
  14. ic,_ = ProductClass._default_manager.get_or_create(name=product_class)
  15. item = Product._default_manager.create(title=title, product_class=ic, upc=upc)
  16. if price:
  17. partner,_ = Partner._default_manager.get_or_create(name=partner)
  18. sr = StockRecord._default_manager.create(product=item, partner=partner,
  19. price_excl_tax=price, num_in_stock=num_in_stock)
  20. return item
  21. class TwillTestCase(TestCase):
  22. """
  23. Simple wrapper around Twill to make writing TestCases easier.
  24. Commands availabel through self.command are:
  25. - go -> visit a URL
  26. - back -> back to previous URL
  27. - reload -> reload URL
  28. - follow -> follow a given link
  29. - code -> assert the HTTP response code
  30. - find -> assert page contains some string
  31. - notfind -> assert page does not contain
  32. - title -> assert page title
  33. """
  34. HOST = '127.0.0.1'
  35. PORT = 8080
  36. def setUp(self):
  37. app = AdminMediaHandler(WSGIHandler())
  38. twill.add_wsgi_intercept(self.HOST, self.PORT, lambda: app)
  39. twill.set_output(StringIO())
  40. self.command = twill.commands
  41. def tearDown(self):
  42. twill.remove_wsgi_intercept(self.HOST, self.PORT)
  43. def reverse(self, url_name, *args, **kwargs):
  44. """
  45. Custom 'reverse' function that includes the protocol and host
  46. """
  47. return 'http://%s:%d%s' % (self.HOST, self.PORT, reverse(url_name, *args, **kwargs))
  48. def visit(self, url_name, *args,**kwargs):
  49. self.command.go(self.reverse(url_name, *args, **kwargs))
  50. def assertResponseCodeIs(self, code):
  51. self.command.code(code)
  52. def assertPageContains(self, regexp):
  53. self.command.find(regexp)
  54. def assertPageDoesNotContain(self, regexp):
  55. self.command.notfind(regexp)
  56. def assertPageTitleMatches(self, regexp):
  57. self.command.title(regexp)