{"id":127,"date":"2012-01-30T08:43:05","date_gmt":"2012-01-30T07:43:05","guid":{"rendered":"http:\/\/blog.gocept.com\/?p=127"},"modified":"2012-12-08T14:14:43","modified_gmt":"2012-12-08T13:14:43","slug":"sprint-fruits-gocept-exttest-and-gocept-package","status":"publish","type":"post","link":"https:\/\/blog.gocept.com\/2012\/01\/30\/sprint-fruits-gocept-exttest-and-gocept-package\/","title":{"rendered":"Sprint fruits: gocept.exttest and gocept.package"},"content":{"rendered":"

\"\"<\/a>The whole company spent three days in Kloster Dr\u00fcbeck<\/a> sprinting on internal tools and topics.<\/p>\n

We overhauled our workflow for generating invoices and identified steps that we could automate.<\/p>\n

We polished and released gocept.exttest<\/a>, which integrates for example JavaScript unittest to Python’s unittest framework. In a nutshell, it allows you to write JS tests like this:<\/p>\n

require 'my_app.js'\r\n\r\ndescribe 'MyApp', ->\r\n  it 'has read Douglas Adams', ->\r\n  expect(new MyApp().calculate_the_answer()).toEqual(42)<\/pre>\n

and include them into your Python test suite with a single command:<\/p>\n

import gocept.exttest\r\ndef test_suite():\r\n    return gocept.exttest.makeSuite(\r\n        os.environ.get('jasmine-bin'),\r\n        '--coffee',\r\n        '--json',\r\n        pkg_resources.resource_filename('your.package', 'tests'))<\/pre>\n

The third area of our efforts was documentation, we designed a Sphinx skeleton to make it easy to get started writing docs, and created a template for eggs that contains the necessary boilerplate and codifies our packaging and documentation conventions. While the concrete details are probably a bit specific to our tastes, some of the general mechanincs might be interesting to others, so we’ll release gocept.package<\/a> once we’ve got the missing integration tests sorted out.<\/p>\n","protected":false},"excerpt":{"rendered":"

The whole company spent three days in Kloster Dr\u00fcbeck sprinting on internal tools and topics. We overhauled our workflow for generating invoices and identified steps that we could automate. We polished and released gocept.exttest, which integrates for example JavaScript unittest to Python’s unittest framework. In a nutshell, it allows you to write JS tests like … Continue reading “Sprint fruits: gocept.exttest and gocept.package”<\/span><\/a><\/p>\n","protected":false},"author":10315341,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_newsletter_tier_id":0,"footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[10221],"tags":[832],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pFP3y-23","jetpack-related-posts":[{"id":2351,"url":"https:\/\/blog.gocept.com\/2017\/05\/03\/zope-2-resurrection-sprint-day-1\/","url_meta":{"origin":127,"position":0},"title":"Zope 2 Resurrection Sprint \u2013 Day 1","author":"Michael Howitz","date":"May 3, 2017","format":false,"excerpt":"Welcome to the\u00a0Zope 2 Resurrection Sprint in Halle (Saale), Germany. We hope you enjoyed the time since the\u00a0Last call for take off to the Python 3 wonderland. We already achieved some things: Zope 4 no longer depends on\u00a0sourcecodegen\u00a0which was one of Zope's dependencies Earl Zope II\u00a0had to leave behind for\u2026","rel":"","context":"In "en"","block_context":{"text":"en","link":"https:\/\/blog.gocept.com\/category\/en\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":39,"url":"https:\/\/blog.gocept.com\/2011\/01\/24\/testing-pyramid-applications-with-zope-testbrowser\/","url_meta":{"origin":127,"position":1},"title":"Testing pyramid applications with zope.testbrowser","author":"","date":"January 24, 2011","format":false,"excerpt":"The Pyramid documentation recommends using WebTest for functional tests, but coming from the Zope world, zope.testbrowser is the more familiar tool for this job (and it seems a little more high-level than WebTest at first glance). With the 3.11 release,\u00a0 zope.testbrowser gained out-of-the-box support for talking to WSGI applications (courtesy\u2026","rel":"","context":"In "en"","block_context":{"text":"en","link":"https:\/\/blog.gocept.com\/category\/en\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":381,"url":"https:\/\/blog.gocept.com\/2013\/01\/16\/news-from-the-toolbox-gocept-selenium-and-our-plans-for-its-future\/","url_meta":{"origin":127,"position":2},"title":"News from the toolbox: gocept.selenium and our plans for its future","author":"","date":"January 16, 2013","format":false,"excerpt":"For a couple of years, we at gocept have been developing a Python library, gocept.selenium, whose goal it is to integrate testing web sites in real browsers with the Python unittest framework. There exist a number of approaches to doing this; when first starting real-browser tests, we opted for using\u2026","rel":"","context":"In "en"","block_context":{"text":"en","link":"https:\/\/blog.gocept.com\/category\/en\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2407,"url":"https:\/\/blog.gocept.com\/2017\/05\/05\/zope-2-resurrection-sprint-goal-accomplished\/","url_meta":{"origin":127,"position":3},"title":"Zope 2 Resurrection Sprint \u2013 Goal accomplished","author":"Michael Howitz","date":"May 5, 2017","format":false,"excerpt":"The sprint days were really busy for\u00a0Earl Zope II\u00a0and the people helping him with the Python 3 wonderland immigration authorities. Zope can be installed using Python 3 can be started and renders some views has more than 1.700 of more than 2.300 tests running has some\u00a0optional dependencies left to be\u2026","rel":"","context":"In "en"","block_context":{"text":"en","link":"https:\/\/blog.gocept.com\/category\/en\/"},"img":{"alt_text":"Many screens","src":"https:\/\/i0.wp.com\/blog.gocept.com\/wp-content\/uploads\/2017\/05\/img_20170503_183916-e1493991770316.jpg?fit=1200%2C943&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.gocept.com\/wp-content\/uploads\/2017\/05\/img_20170503_183916-e1493991770316.jpg?fit=1200%2C943&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/blog.gocept.com\/wp-content\/uploads\/2017\/05\/img_20170503_183916-e1493991770316.jpg?fit=1200%2C943&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/blog.gocept.com\/wp-content\/uploads\/2017\/05\/img_20170503_183916-e1493991770316.jpg?fit=1200%2C943&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/blog.gocept.com\/wp-content\/uploads\/2017\/05\/img_20170503_183916-e1493991770316.jpg?fit=1200%2C943&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":3240,"url":"https:\/\/blog.gocept.com\/2018\/07\/09\/saltlabs-sprint-zope-and-plone-sprint-in-a-new-location\/","url_meta":{"origin":127,"position":4},"title":"Saltlabs Sprint: Zope and Plone sprint in a new location","author":"Michael Howitz","date":"July 9, 2018","format":false,"excerpt":"After Earl Zope II is now nearly relocated to the Python 3 wonderland, gocept will move to a new head quarter in the next months. This is the right time to celebrate with a new sprint, as we have now even more space for sprinters. The new location is called\u2026","rel":"","context":"In "en"","block_context":{"text":"en","link":"https:\/\/blog.gocept.com\/category\/en\/"},"img":{"alt_text":"Photo by Jill Heyer on Unsplash","src":"https:\/\/i0.wp.com\/blog.gocept.com\/wp-content\/uploads\/2018\/07\/jill-heyer-247995-unsplash.jpg?fit=1200%2C800&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.gocept.com\/wp-content\/uploads\/2018\/07\/jill-heyer-247995-unsplash.jpg?fit=1200%2C800&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/blog.gocept.com\/wp-content\/uploads\/2018\/07\/jill-heyer-247995-unsplash.jpg?fit=1200%2C800&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/blog.gocept.com\/wp-content\/uploads\/2018\/07\/jill-heyer-247995-unsplash.jpg?fit=1200%2C800&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/blog.gocept.com\/wp-content\/uploads\/2018\/07\/jill-heyer-247995-unsplash.jpg?fit=1200%2C800&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":3368,"url":"https:\/\/blog.gocept.com\/2020\/02\/28\/zope-may-sprint\/","url_meta":{"origin":127,"position":5},"title":"Zope May Sprint","author":"Michael Howitz","date":"February 28, 2020","format":false,"excerpt":"Earl Zope has settled down for a good while in Python 3 wonderland. He made friends with the inhabitants and other immigrants. He enjoys his new live. The sunset of his original homelands took place as predicted by the beginning of January 2020. As Earl Zope was well prepared this\u2026","rel":"","context":"In "en"","block_context":{"text":"en","link":"https:\/\/blog.gocept.com\/category\/en\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.gocept.com\/wp-content\/uploads\/2020\/02\/lily-of-the-valley-4175855_1920.jpg?fit=1200%2C798&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.gocept.com\/wp-content\/uploads\/2020\/02\/lily-of-the-valley-4175855_1920.jpg?fit=1200%2C798&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/blog.gocept.com\/wp-content\/uploads\/2020\/02\/lily-of-the-valley-4175855_1920.jpg?fit=1200%2C798&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/blog.gocept.com\/wp-content\/uploads\/2020\/02\/lily-of-the-valley-4175855_1920.jpg?fit=1200%2C798&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/blog.gocept.com\/wp-content\/uploads\/2020\/02\/lily-of-the-valley-4175855_1920.jpg?fit=1200%2C798&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/blog.gocept.com\/wp-json\/wp\/v2\/posts\/127"}],"collection":[{"href":"https:\/\/blog.gocept.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.gocept.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.gocept.com\/wp-json\/wp\/v2\/users\/10315341"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.gocept.com\/wp-json\/wp\/v2\/comments?post=127"}],"version-history":[{"count":7,"href":"https:\/\/blog.gocept.com\/wp-json\/wp\/v2\/posts\/127\/revisions"}],"predecessor-version":[{"id":346,"href":"https:\/\/blog.gocept.com\/wp-json\/wp\/v2\/posts\/127\/revisions\/346"}],"wp:attachment":[{"href":"https:\/\/blog.gocept.com\/wp-json\/wp\/v2\/media?parent=127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.gocept.com\/wp-json\/wp\/v2\/categories?post=127"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.gocept.com\/wp-json\/wp\/v2\/tags?post=127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}