Testing My Patience. Automated Testing for Python Projects. Adam Lowry Portland Python Users Group

Size: px
Start display at page:

Download "Testing My Patience. Automated Testing for Python Projects. Adam Lowry Portland Python Users Group"

Transcription

1 Testing My Patience Automated Testing for Python Projects Adam Lowry Portland Python Users Group

2 Unit Testing Integration/Functional Testing Web Testing

3 Maurice Koop: Avoid This

4 michelle_p: Unit Testing Purpose: ensure correctness, exercise code Test a small area; one class, or ideally one method Cover possible errors here, because that s harder at higher levels TDD worth trying, but unit testing is useful no matter what

5 unittest import unittest class TestMath(unittest.TestCase): def test_addition(self): """Simple addition must be correct.""" self.assertequals(2 + 2, 4) assert == 6 if name == ' main ': unittest.main() Ugh, assertequals. So non-pep8! assertequals -> failure assert -> error (any exception)

6 Running python test-examples.py --verbose Simple addition must be correct.... ok Ran 1 test in 0.000s OK Collection is a pain. What file to run?

7 nose for sanity s sake adam@rye:~/projects/pdxpython$ nosetests -v Simple addition must be correct.... ok Ran 1 test in seconds OK (?:^ [\\b_\\.-])[tt]est Searches filesystem for tests, auto-adds current dir to pythonpath, runs anything that looks like a test (matches that regexp) Includes very handy plugins (like code coverage!)

8 py.test worth considering py.test -v test-examples.py ============================= test session starts ============================== python: platform darwin -- Python /Users/adam/projects/pdxpython/bin/ python pytest test object 1: /Users/adam/projects/pdxpython/test-examples.py test-examples.py:6: TestMath.test_addition PASS =========================== 1 passed in 0.03 seconds =========================== Cool! Lots of features. Totally non intuitive to me

9 import nose def test_add(): assert == 3 def test_add2(): nose.tools.assert_equals(2 + 2, 3) (pdxpython)adam@rye:~/projects/pdxpython$ nosetests -v nose-examples.py nose-examples.test_add... FAIL nose-examples.test_add2... FAIL ====================================================================== FAIL: nose-examples.test_add Traceback (most recent call last): File "/Users/adam/projects/pdxpython/lib/python2.5/site-packages/nose py2.5.egg/nose/case.py", line 183, in runtest self.test(*self.arg) File "/Users/adam/projects/pdxpython/nose-examples.py", line 5, in test_add assert == 3 AssertionError ====================================================================== FAIL: nose-examples.test_add Traceback (most recent call last): File "/Users/adam/projects/pdxpython/lib/python2.5/site-packages/nose py2.5.egg/nose/case.py", line 183, in runtest self.test(*self.arg) File "/Users/adam/projects/pdxpython/nose-examples.py", line 9, in test_add2 nose.tools.assert_equals(2 + 2, 3) AssertionError: 4!= Ran 2 tests in seconds FAILED (failures=2) Plain functions! More Pythonic, but mixing & matching is good.

10 class TestMath(unittest.TestCase): def setup(self): self.target = 4 def test_addition(self): """Simple addition must be correct.""" self.assertequals(2 + 2, self.target) assert == 6 target = None def set_target(): global target target = def test_add(): nose.tools.assert_equals(2 + 2, target) Do you have fixtures to set up before every function? Storing data as member variables? Go ahead and use a class. Kind of a ideological.

11 Pros: Show API usage in test - Executable documentation Cons: No fixtures (setup/teardown) - No editor support - Can be hard to debug Doctest class Outer(object): """Outside worker >>> outer = Outer() >>> outer.outer_work() True """ def init (self): self.inner = Inner() def outer_work(self): try: return self.inner.inner_work() except Exception: return False (pdxpython)adam@rye:~/projects/pdxpython$ nosetests -v --with-doctest worker.py Doctest: worker.outer... ok Ran 1 test in seconds OK

12 Mocks and Stubs Sakurako Kitsa Andrei Z

13 Mock: action assertion Mox: record replay

14 class Inner(object): def inner_work(self): return True class Outer(object): def init (self): self.inner = Inner() def outer_work(self): try: return self.inner.inner_work() except Exception: return False Goal: test Outer isolated from Inner

15 lambda x: True) def test_outer_w_mock(): outer = worker.outer() nose.tools.assert_equal(outer.outer_work(), lambda x: False) def test_outer_inner_fails_w_mock(): outer = worker.outer() nose.tools.assert_equal(outer.outer_work(), False)

16 mox.stuboutwithmock() def test_outer_w_mox(): moxer = mox.mox() moxer.stuboutwithmock(worker.inner, 'inner_work') worker.inner.inner_work().andreturn(true) moxer.replayall() outer = worker.outer() nose.tools.assert_equal(outer.outer_work(), True) moxer.verifyall() moxer.unsetstubs()

17 class TestOuterWMox(mox.MoxTestBase): def test_outer_fails(self): self.mox.stuboutwithmock(worker.inner, 'inner_work') worker.inner.inner_work().andreturn(false) self.mox.replayall() outer = worker.outer() nose.tools.assert_equal(outer.outer_work(), False) self.mox.verifyall()

18 Testing Exceptions def raiser(obj): raise raiser) def test_outer_exc_w_mock(): outer = worker.outer() nose.tools.assert_equal(outer.outer_work(), False) def test_outer_exception(self): self.mox.stuboutwithmock(worker.inner, 'inner_work') worker.inner.inner_work().andraise(exception) self.mox.replayall() outer = worker.outer() nose.tools.assert_equal(outer.outer_work(), False) self.mox.verifyall()

19 This is your application AriCee: It is a unique and beautiful snowflake. It has special needs.

20 class User(object): """User object, connected to the user_table >>> user = User(password='password') >>> db.session.flush() >>> user # doctest: +ELLIPSIS <User...> >>> user.is_anonymous() False >>> User.query.filter_by(id=user.id).one() is user True >>> user.id 1 """ def init (self, **kwargs): Our goal: use doctests like this on SQLAlchemy-backed objects, touching an in-memory SQLite database, automatic rollback after every test SQLAlchemy had auto-add, scoped sessions, so lots automatic

21 Solution: Custom Nose Plugin from nose.plugins import Plugin class RollbackPlugin(Plugin): """Rollback transaction after each test""" name = 'rollback' def beforetest(self, test): from myapp import test_utils test_utils.set_up_app() def aftertest(self, test): from myapp import db db.session.rollback() db.session.close()

22 setup.py try: import ez_setup ez_setup.use_setuptools() except ImportError: pass from setuptools import setup setup( name='rollbackplugin', description='nose plugin to rollback transaction after each test', py_modules=['rollback'], version='0.1', zip_safe=false, entry_points={ 'nose.plugins': [ 'rollback = rollback:rollbackplugin' ] } ) nosetests -v --with-doctest --with-rollback Nose uses setuptools entry points for plugins, so you ll need to make a package Nose config handling isn t the best, so I like to put default plugins in test running script (Paver)

23 Integration/Functional Testing fotoopa: When you put the pieces together, it can get a little complex. Especially setup & teardown - need to clean DB, file system? - Keep it totally separate from normal workspace so you don t kill your personal test data

24 # in tests/ init.py server_proc = None def setup_package(): global server_proc subprocess.call("dropdb myapp-test") subprocess.call("createdb myapp-test") server_proc = subprocess.popen("myapp/manage.py runserver --noreload") def teardown_package(): server_proc.kill() Use nose package fixtures for setup/teardown easy to read, can still use nose to handle most everything

25 Web Testing I mostly work on web apps. Use functional testing, set up like before. But how to Interact?

26 Twill go $home code 200 find "Don't have an account yet?" # login screen fv 1 username $username fv 1 password $password submit code 200 notfind 'Sorry' from twill.commands import * go(home) code(200) find("don't have an account yet?") # login screen fv(1, "username", username) fv(1, "password", password) submit() code(200) notfind('sorry') Simple language or python functions no javascript, but very fast speaks http directly, but has a wrapper for wsgi to speak to an app directly

27 Twill Plugins def enter_password( , password): """Enters and password in login form.""" import twill.commands as cmds cmds.fv(' ', ' ', ) cmds.fv(' ', 'password', password) cmds.fv(' ', 'has_password', 'yes') cmds.submit() cmds.code(200) twill.commands.extend_with('myapp.twill_extensions') Useful way to reduce duplication in tests Remember: tests are code! You have to refactor them, as well

28 Javascript? Windmill Avoid Selenium if you haven t already invested time. Great project, difficult to debug

29 References nose: py.test: Mock: Mox: Twill: Windmill:

30 Thanks!

Software Carpentry. Nicola Chiapolini. Physik-Institut University of Zurich. June 16, 2015

Software Carpentry. Nicola Chiapolini. Physik-Institut University of Zurich. June 16, 2015 Nicola Chiapolini, June 16, 2015 1 / 45 Software Carpentry Nicola Chiapolini Physik-Institut University of Zurich June 16, 2015 Based on a talk by Pietro Berkes This work is licensed under the Creative

More information

doubles Documentation

doubles Documentation doubles Documentation Release 1.1.0 Jimmy Cuadra August 23, 2015 Contents 1 Installation 3 2 Integration with test frameworks 5 2.1 Pytest................................................... 5 2.2 Nose...................................................

More information

Test-Driven Data Science: Writing Unit Tests for SASPy Python Data Processes

Test-Driven Data Science: Writing Unit Tests for SASPy Python Data Processes SAS2347-2018 Test-Driven Data Science: Writing Unit Tests for SASPy Python Data Processes Stephen Siegert, SAS Institute Inc. ABSTRACT Code needs tested == True. We ve all been there tweak this parameter,

More information

Flask-Testing Documentation

Flask-Testing Documentation Flask-Testing Documentation Release 0.3 Dan Jacob Dec 31, 2017 Contents 1 Installing Flask-Testing 3 2 Writing tests 5 2.1 Testing with LiveServer......................................... 5 2.2 Dynamic

More information

Continuous Integration INRIA

Continuous Integration INRIA Vincent Rouvreau - https://sed.saclay.inria.fr February 28, 2017 Contents 1 Preamble In this exercice, you will learn how to install your Python program with packaging tools, test it, measure the tests

More information

Agile development. Agile development work cycle. Reacting to bugs

Agile development. Agile development work cycle. Reacting to bugs Agile development Agile development work cycle Repeat until all features are implemented: 1. Write a test that defines your next feature 2. Write the simplest version of code that makes your test 3. Run

More information

Lotus IT Hub. Module-1: Python Foundation (Mandatory)

Lotus IT Hub. Module-1: Python Foundation (Mandatory) Module-1: Python Foundation (Mandatory) What is Python and history of Python? Why Python and where to use it? Discussion about Python 2 and Python 3 Set up Python environment for development Demonstration

More information

Unit Testing and Python. Pat Pannuto / Marcus Darden

Unit Testing and Python. Pat Pannuto / Marcus Darden Unit Testing and Python Pat Pannuto / Marcus Darden Test Driven Development (TDD) Test Driven Development (TDD) TDD Methodology "Strictly speaking" 1. Add a test 2. Run the test suite Note: This should

More information

Unit Tests. # Store the result of a boolean expression in a variable. >>> result = str(5)=='5'

Unit Tests. # Store the result of a boolean expression in a variable. >>> result = str(5)=='5' 7 Unit Testing Lab Objective: Finding and fixing programming errors can be difficult and time consuming, especially in large or complex programs. Unit testing is a formal strategy for finding and eliminating

More information

Betamax Documentation

Betamax Documentation Betamax Documentation Release 0.8.1 Ian Stapleton Cordasco Apr 06, 2018 Narrative Documentation 1 Example Use 3 2 What does it even do? 5 3 VCR Cassette Compatibility 7 4 Contributing 9 5 Contents of

More information

Django Test Utils Documentation

Django Test Utils Documentation Django Test Utils Documentation Release 0.3 Eric Holscher July 22, 2016 Contents 1 Source Code 3 2 Contents 5 2.1 Django Testmaker............................................ 5 2.2 Django Crawler.............................................

More information

Representing Documents; Unit Testing II

Representing Documents; Unit Testing II Representing Documents; Unit Testing II Benjamin Roth CIS LMU Benjamin Roth (CIS LMU) Representing Documents;Unit Testing II 1 / 26 Documents and Word Statistics Often, documents are the units a natural

More information

flask-dynamo Documentation

flask-dynamo Documentation flask-dynamo Documentation Release 0.1.2 Randall Degges January 22, 2018 Contents 1 User s Guide 3 1.1 Quickstart................................................ 3 1.2 Getting Help...............................................

More information

PyBuilder Documentation

PyBuilder Documentation PyBuilder Documentation Release 0.10 PyBuilder Team Jun 21, 2018 Contents 1 Installation 1 1.1 Virtual Environment........................................... 1 1.2 Installing completions..........................................

More information

Growing Embedded Applications Organically with Ceedling and Friends. Greg Williams

Growing Embedded Applications Organically with Ceedling and Friends. Greg Williams Growing Embedded Applications Organically with Ceedling and Friends Greg Williams Embedded Development... Limited Memory Limited Processing Power Language Limitations Short Timelines Growing Complexity

More information

Test-Driven Development JUnit

Test-Driven Development JUnit Test-Driven Development JUnit Click to edit Master EECS text 2311 styles - Software Development Project Second level Third level Fourth level Fifth level Wednesday, January 18, 2017 1 Simulator submission

More information

Archan. Release 2.0.1

Archan. Release 2.0.1 Archan Release 2.0.1 Jul 30, 2018 Contents 1 Archan 1 1.1 Features.................................................. 1 1.2 Installation................................................ 1 1.3 Documentation..............................................

More information

gocept.selenium Release 3.0

gocept.selenium Release 3.0 gocept.selenium Release 3.0 Feb 12, 2018 Contents 1 Environment variables 3 2 Jenkins integration 5 3 Tips & Tricks 7 3.1 Using a custom Firefox profile...................................... 7 3.2 Using

More information

CNRS ANF PYTHON Packaging & Life Cycle

CNRS ANF PYTHON Packaging & Life Cycle CNRS ANF PYTHON Packaging & Life Cycle Marc Poinot Numerical Simulation Dept. Outline Package management with Python Concepts Software life cycle Package services Pragmatic approach Practical works Source

More information

Reliable programming

Reliable programming Reliable programming How to write programs that work Think about reliability during design and implementation Test systematically When things break, fix them correctly Make sure everything stays fixed

More information

CSE : Python Programming. Packages (Tutorial, Section 6.4) Announcements. Today. Packages: Concretely. Packages: Overview

CSE : Python Programming. Packages (Tutorial, Section 6.4) Announcements. Today. Packages: Concretely. Packages: Overview Announcements CSE 399-004: Python Programming Lecture 07: Packages, Command-line arguments, and Unit testing February 26, 2007 http://www.seas.upenn.edu/~cse39904/ No homework this week There may be one

More information

EXPERIENCES MOVING FROM DJANGO TO FLASK

EXPERIENCES MOVING FROM DJANGO TO FLASK EXPERIENCES MOVING FROM DJANGO TO FLASK DAN O BRIEN, VP OF ENGINEERING CRAIG LANCASTER, CTO Jana Mobile Inc. www.jana.com WHO WE ARE Jana is a startup company in Boston connecting advertising and marketing

More information

Learning vrealize Orchestrator in action V M U G L A B

Learning vrealize Orchestrator in action V M U G L A B Learning vrealize Orchestrator in action V M U G L A B Lab Learning vrealize Orchestrator in action Code examples If you don t feel like typing the code you can download it from the webserver running on

More information

web.py Tutorial Tom Kelliher, CS 317 This tutorial is the tutorial from the web.py web site, with a few revisions for our local environment.

web.py Tutorial Tom Kelliher, CS 317 This tutorial is the tutorial from the web.py web site, with a few revisions for our local environment. web.py Tutorial Tom Kelliher, CS 317 1 Acknowledgment This tutorial is the tutorial from the web.py web site, with a few revisions for our local environment. 2 Starting So you know Python and want to make

More information

CUSTOM CODE CHECKS. Anton Marchukov. PyCon Israel 2017

CUSTOM CODE CHECKS. Anton Marchukov. PyCon Israel 2017 Anton Marchukov PyCon Israel 2017 ABOUT ME @martchukov Senior Software Engineer at Red Hat. ovirt Community Infra team. CI and related infrastructure. Lots of automation in Python. DevOps advocate. ovirt

More information

HOW TO FLASK. And a very short intro to web development and databases

HOW TO FLASK. And a very short intro to web development and databases HOW TO FLASK And a very short intro to web development and databases FLASK Flask is a web application framework written in Python. Created by an international Python community called Pocco. Based on 2

More information

Airoscript-ng Documentation

Airoscript-ng Documentation Airoscript-ng Documentation Release 0.0.4 David Francos Cuartero January 22, 2015 Contents 1 Airoscript-ng 3 1.1 Features.................................................. 3 1.2 TODO..................................................

More information

django-embed-video Documentation

django-embed-video Documentation django-embed-video Documentation Release 0.7.stable Juda Kaleta December 21, 2013 Contents i ii Django app for easy embeding YouTube and Vimeo videos and music from SoundCloud. Repository is located on

More information

Unit Testing In Python

Unit Testing In Python Lab 13 Unit Testing In Python Lab Objective: One of the hardest parts of computer programming is ensuring that a program does what you expect it to do. For instance, a program may fail to meet specifications,

More information

Watson - DB. Release 2.7.0

Watson - DB. Release 2.7.0 Watson - DB Release 2.7.0 Jan 15, 2018 Contents 1 Build Status 3 2 Dependencies 5 3 Installation 7 4 Testing 9 5 Contributing 11 6 Table of Contents 13 6.1 Usage...................................................

More information

zope.location Documentation

zope.location Documentation zope.location Documentation Release 4.0 Zope Foundation Contributors January 28, 2015 Contents 1 Using zope.location 3 1.1 Location................................................ 3 1.2 inside()................................................

More information

Ra Documentation. Release. Brandicted

Ra Documentation. Release. Brandicted Ra Documentation Release Brandicted Oct 05, 2017 Contents 1 Table of Contents 3 1.1 Getting Started.............................................. 3 1.2 Writing Tests...............................................

More information

Pytest C. Release. John McNamara

Pytest C. Release. John McNamara Pytest C Release John McNamara Mar 08, 2018 Contents 1 The C Unit Tests 1 2 The Pytest hooks 3 2.1 The conftest.py file............................................ 3 2.2 Finding test files.............................................

More information

Software carpentry From theory to practice: Python tools. Pietro Berkes, Enthought UK

Software carpentry From theory to practice: Python tools. Pietro Berkes, Enthought UK Software carpentry From theory to practice: Python tools Pietro Berkes, Enthought UK Outline } Ouverture } The agile programming cycle, scientific-style } Testing scientific code } Debugging } Optimization

More information

aiounittest Documentation

aiounittest Documentation aiounittest Documentation Release 1.1.0 Krzysztof Warunek Sep 23, 2017 Contents 1 What? Why? Next? 1 1.1 What?................................................... 1 1.2 Why?...................................................

More information

Software carpentry From theory to practice: Standard tools. Pietro Berkes, Enthought UK

Software carpentry From theory to practice: Standard tools. Pietro Berkes, Enthought UK Software carpentry From theory to practice: Standard tools Pietro Berkes, Enthought UK Modern programming practices and science } Researchers and scientific software developers write software daily, but

More information

Let s Test South Africa. Tim Coulter, 2014

Let s Test South Africa. Tim Coulter, 2014 Let s Test South Africa Tim Coulter, 2014 tim@tjc.io Automation is like beating dumb kids with a stick. Text Automation sucks. (for a lot of reasons) Main points My Background Definitions Value - does

More information

Unifer Documentation. Release V1.0. Matthew S

Unifer Documentation. Release V1.0. Matthew S Unifer Documentation Release V1.0 Matthew S July 28, 2014 Contents 1 Unifer Tutorial - Notes Web App 3 1.1 Setting up................................................. 3 1.2 Getting the Template...........................................

More information

Developing your own Swift middleware. OpenStack Summit Atlanta, May 2014

Developing your own Swift middleware. OpenStack Summit Atlanta, May 2014 Developing your own Swift middleware OpenStack Summit Atlanta, May 2014 About me Christian Schwede Developer @ enovance Mostly working on Swift, testing and automation Started using Swift in 2012 Agenda

More information

Basic Keywords Practice Session

Basic Keywords Practice Session Basic Keywords Practice Session Introduction In this article from my free Java 8 course, we will apply what we learned in my Java 8 Course Introduction to our first real Java program. If you haven t yet,

More information

Just Mock It! Leveraging Mock Objects

Just Mock It! Leveraging Mock Objects Just Mock It! Leveraging Mock Objects 1 Who am I? Luis Majano - Computer Engineer Born in San Salvador, El Salvador --> President of Ortus Solutions Manager of the IECFUG (www.iecfug.com) Creator of ColdBox,

More information

Django Standalone Apps

Django Standalone Apps Django Standalone Apps A developer s fieldguide to developing reusable Django applications Ben Lopatin 2015-2016 Ben Lopatin Contents Just a sample................................... Introduction...................................

More information

Unit testing with pytest and nose 1

Unit testing with pytest and nose 1 Unit testing with pytest and nose 1 Hans Petter Langtangen 1,2 1 Center for Biomedical Computing, Simula Research Laboratory 2 Department of Informatics, University of Oslo Mar 23, 2015 Contents 1 Requirements

More information

How does PyCharm match up against competing tools?

How does PyCharm match up against competing tools? How does PyCharm match up against competing tools? PyCharm is an IDE for Python developed by JetBrains. PyCharm is built for professional Python developers, and comes with many features to deal with large

More information

django-dynamic-db-router Documentation

django-dynamic-db-router Documentation django-dynamic-db-router Documentation Release 0.1.1 Erik Swanson August 24, 2016 Contents 1 Table of Contents 3 1.1 Installation................................................ 3 1.2 Quickstart................................................

More information

flexmock Documentation

flexmock Documentation flexmock Documentation Release 0.10.2 Slavek Kabrda, Herman Sheremetyev November 08, 2016 Contents 1 Installation 3 2 Compatibility 5 3 Start Here 7 3.1 Start Here.................................................

More information

USING DRUPAL. Hampshire College Website Editors Guide https://drupal.hampshire.edu

USING DRUPAL. Hampshire College Website Editors Guide https://drupal.hampshire.edu USING DRUPAL Hampshire College Website Editors Guide 2014 https://drupal.hampshire.edu Asha Kinney Hampshire College Information Technology - 2014 HOW TO GET HELP Your best bet is ALWAYS going to be to

More information

Test automation / JUnit. Building automatically repeatable test suites

Test automation / JUnit. Building automatically repeatable test suites Test automation / JUnit Building automatically repeatable test suites Test automation n Test automation is software that automates any aspect of testing n Generating test inputs and expected results n

More information

Test automation Test automation / JUnit

Test automation Test automation / JUnit Test automation Test automation / JUnit Building automatically repeatable test suites Test automation is software that automates any aspect of testing Generating test inputs and expected results Running

More information

Setting up Caravel with IBM Big SQL

Setting up Caravel with IBM Big SQL Setting up Caravel with IBM Big SQL Rajesh Kartha, IBM Introduction: Airbnb recently open sourced their visualization/dashboarding tool called Caravel (inception name Panoramix). This tool is under Apache

More information

3 Continuous Integration 3. Automated system finding bugs is better than people

3 Continuous Integration 3. Automated system finding bugs is better than people This presentation is based upon a 3 day course I took from Jared Richardson. The examples and most of the tools presented are Java-centric, but there are equivalent tools for other languages or you can

More information

CMSC 201 Fall 2016 Lab 09 Advanced Debugging

CMSC 201 Fall 2016 Lab 09 Advanced Debugging CMSC 201 Fall 2016 Lab 09 Advanced Debugging Assignment: Lab 09 Advanced Debugging Due Date: During discussion Value: 10 points Part 1: Introduction to Errors Throughout this semester, we have been working

More information

Advanced Flask Patterns

Advanced Flask Patterns Advanced Flask Patterns (mysteriously also applicable to other things) a presentation by Armin Ronacher @mitsuhiko Some of these things are general suggestions of how I think applications can be structured

More information

Instrumental Documentation

Instrumental Documentation Instrumental Documentation Release 0.5.1 Matthew J Desmarais February 08, 2016 Contents 1 Introduction 3 1.1 What is instrumental?.......................................... 3 1.2 What s the problem?...........................................

More information

Getting Django Set Up Using a Functional Test

Getting Django Set Up Using a Functional Test CHAPTER 1 Getting Django Set Up Using a Functional Test TDD isn t something that comes naturally. It s a discipline, like a martial art, and just like in a Kung-Fu movie, you need a bad-tempered and unreasonable

More information

APACHE SLING & FRIENDS TECH MEETUP BERLIN, SEPTEMBER How to write clean & testable code without losing your mind - Andreas Czakaj

APACHE SLING & FRIENDS TECH MEETUP BERLIN, SEPTEMBER How to write clean & testable code without losing your mind - Andreas Czakaj APACHE SLING & FRIENDS TECH MEETUP BERLIN, 25-27 SEPTEMBER 2017 How to write clean & testable code without losing your mind - Andreas Czakaj How did you learn what you know today? There are three kinds

More information

Release Clearcode < and associates (see AUTHORS)

Release Clearcode <  and associates (see AUTHORS) pytest s aucedocumentation Release 0.3.3 Clearcode and associates (see AUTHORS) July 14, 2014 Contents 1 Contents 3 1.1 Usage................................................... 3

More information

tolerance Documentation

tolerance Documentation tolerance Documentation Release Alisue Apr 1, 217 Contents 1 tolerance 1 1.1 Features.................................................. 1 1.2 Installation................................................

More information

nacelle Documentation

nacelle Documentation nacelle Documentation Release 0.4.1 Patrick Carey August 16, 2014 Contents 1 Standing on the shoulders of giants 3 2 Contents 5 2.1 Getting Started.............................................. 5 2.2

More information

pycall Documentation Release Randall Degges

pycall Documentation Release Randall Degges pycall Documentation Release 2.3.2 Randall Degges Sep 28, 2017 Contents 1 Foreword 3 1.1 What is Asterisk?............................................. 3 1.2 What Are Call Files?...........................................

More information

SQLite vs. MongoDB for Big Data

SQLite vs. MongoDB for Big Data SQLite vs. MongoDB for Big Data In my latest tutorial I walked readers through a Python script designed to download tweets by a set of Twitter users and insert them into an SQLite database. In this post

More information

Mavrig. a Tcl application construction kit. Jean-Claude Wippler Equi 4 Software, NL. EuroTcl 2008, Strasbourg, FR

Mavrig. a Tcl application construction kit. Jean-Claude Wippler Equi 4 Software, NL. EuroTcl 2008, Strasbourg, FR Mavrig a Tcl application construction kit Jean-Claude Wippler Equi 4 Software, NL EuroTcl 2008, Strasbourg, FR Let s write an app Tons of packages to build with - Tcllib, etc Choose:! file structure, dev

More information

helper Documentation Release Gavin M. Roy

helper Documentation Release Gavin M. Roy helper Documentation Release 2.1.0 Gavin M. Roy September 24, 2013 CONTENTS i ii helper is a command-line/daemon application wrapper package with the aim of creating a consistent and fast way to creating

More information

CP215 Application Design

CP215 Application Design CP215 Application Design Drone outperforms humans at following mountain trails! Tech News! Tech News! Drone outperforms humans at following mountain trails! Facebook to put ads in Messenger Hacker's Tip

More information

Building Scalable Web Apps with Python and Google Cloud Platform. Dan Sanderson, April 2015

Building Scalable Web Apps with Python and Google Cloud Platform. Dan Sanderson, April 2015 Building Scalable Web Apps with Python and Google Cloud Platform Dan Sanderson, April 2015 June 2015 pre-order now Agenda Introducing GCP & GAE Starting a project with gcloud and Cloud Console Understanding

More information

sinon Documentation Release Kir Chou

sinon Documentation Release Kir Chou sinon Documentation Release 0.1.1 Kir Chou Jun 10, 2017 Contents 1 Overview 3 2 Contents 5 2.1 Setup................................................... 5 2.2 Spies...................................................

More information

Mastering Python Decorators

Mastering Python Decorators Mastering Python Decorators One of the hallmarks of good Python is the judicious use of decorators to optimize, simplify and add new functionality to existing code. Decorators are usually seen as an advanced

More information

libqsearch A library designed for fast multiple pattern matching

libqsearch A library designed for fast multiple pattern matching libqsearch A library designed for fast multiple pattern matching Philippe Biondi FOSDEM 2003 February 8-9th, 2003 Outline 1 What is libqsearch? Presentation History Architecture

More information

Python Packaging. Jakub Wasielak

Python Packaging. Jakub Wasielak Python Packaging Jakub Wasielak http://blog.pykonik.org/ http://koderek.edu.pl/ facebook.com/startechkrk https://pl.pycon.org/2017/ What? Why? Architecture https://packaging.python.org/current/ Installation

More information

PyZillow Documentation

PyZillow Documentation PyZillow Documentation Release 0.5.5 Hannes Hapke Jul 10, 2017 Contents 1 Installation 3 2 Usage of the GetDeepSearchResults API 5 3 Usage of the GetUpdatedPropertyDetails API 7 4 Contact Information

More information

EECS 4313 Software Engineering Testing

EECS 4313 Software Engineering Testing EECS 4313 Software Engineering Testing Topic 03: Test automation / JUnit - Building automatically repeatable test suites Zhen Ming (Jack) Jiang Acknowledgement Some slides are from Prof. Alex Orso Relevant

More information

Building a Django Twilio Programmable Chat Application

Building a Django Twilio Programmable Chat Application Building a Django Twilio Programmable Chat Application twilio.com/blog/08/0/python-django-twilio-programmable-chat-application.html March 7, 08 As a developer, I ve always wanted to include chat capabilities

More information

Learning Objectives. Description. Your AU Expert(s) Trent Earley Behlen Mfg. Co. Shane Wemhoff Behlen Mfg. Co.

Learning Objectives. Description. Your AU Expert(s) Trent Earley Behlen Mfg. Co. Shane Wemhoff Behlen Mfg. Co. PL17257 JavaScript and PLM: Empowering the User Trent Earley Behlen Mfg. Co. Shane Wemhoff Behlen Mfg. Co. Learning Objectives Using items and setting data in a Workspace Setting Data in Related Workspaces

More information

Python StatsD Documentation

Python StatsD Documentation Python StatsD Documentation Release 2.0.3 James Socol January 03, 2014 Contents i ii statsd is a friendly front-end to Graphite. This is a Python client for the statsd daemon. Quickly, to use: >>> import

More information

CS354 gdb Tutorial Written by Chris Feilbach

CS354 gdb Tutorial Written by Chris Feilbach CS354 gdb Tutorial Written by Chris Feilbach Purpose This tutorial aims to show you the basics of using gdb to debug C programs. gdb is the GNU debugger, and is provided on systems that

More information

XBMC. Ultimate Guide. HenryFord 3/31/2011. Feel free to share this document with everybody!

XBMC. Ultimate Guide. HenryFord 3/31/2011. Feel free to share this document with everybody! XBMC Ultimate Guide HenryFord 3/31/2011 Feel free to share this document with everybody! Contents Introduction... 2 XBMC... 3 Download and Install XBMC... 3 Setup the Sources... 3 Additional Settings...

More information

CSE : Python Programming. Decorators. Announcements. The decorator pattern. The decorator pattern. The decorator pattern

CSE : Python Programming. Decorators. Announcements. The decorator pattern. The decorator pattern. The decorator pattern CSE 399-004: Python Programming Lecture 12: Decorators April 9, 200 http://www.seas.upenn.edu/~cse39904/ Announcements Projects (code and documentation) are due: April 20, 200 at pm There will be informal

More information

Papyrus Documentation

Papyrus Documentation Papyrus Documentation Release 2.0dev4 Éric Lemoine July 08, 2015 Contents 1 Installing 3 2 Documentation 5 2.1 Creating MapFish Views......................................... 5 2.2 GeoJSON Renderer...........................................

More information

DISQUS. Continuous Deployment Everything. David

DISQUS. Continuous Deployment Everything. David DISQUS Continuous Deployment Everything David Cramer @zeeg Continuous Deployment Shipping new code as soon as it s ready (It s really just super awesome buildbots) Workflow Commit (master) Integration

More information

pytest Documentation Release 3.1 holger krekel, trainer and consultant,

pytest Documentation Release 3.1 holger krekel, trainer and consultant, pytest Documentation Release 3.1 holger krekel, trainer and consultant, http://merlinux.eu Jul 04, 2017 Contents 1 Installation and Getting Started 3 1.1 Installation................................................

More information

Lab Exercise Test First using JUnit

Lab Exercise Test First using JUnit Lunds tekniska högskola Datavetenskap, Nov, 2017 Görel Hedin/Ulf Asklund EDAF45 Programvaruutveckling i grupp projekt Lab Exercise Test First using JUnit Goal This lab is intended to demonstrate basic

More information

Python Mock Tutorial Documentation

Python Mock Tutorial Documentation Python Mock Tutorial Documentation Release 0.1 Javier Collado Nov 14, 2017 Contents 1 Introduction 3 2 Mock 5 2.1 What is a mock object?.......................................... 5 2.2 What makes mock

More information

Python Utils Documentation

Python Utils Documentation Python Utils Documentation Release 2.2.0 Rick van Hattem Sep 27, 2017 Contents 1 Useful Python Utils 3 1.1 Links................................................... 3 1.2 Requirements for installing:.......................................

More information

fiscalyear Documentation

fiscalyear Documentation fiscalyear Documentation Release 0.1.0 Adam J. Stewart Apr 17, 2017 User Documentation 1 Basic Usage 3 1.1 FiscalYear................................................ 3 1.2 FiscalQuarter...............................................

More information

Completely

Completely Completely Test-Driven ian.truslove@nsidc.org @iantruslove UCAR Software Engineering Assembly, Feb 21, 2012 What s In It For Me? So, that TDD sounds great and all, but what about ? See some techniques

More information

tapi Documentation Release 0.1 Jimmy John

tapi Documentation Release 0.1 Jimmy John tapi Documentation Release 0.1 Jimmy John July 02, 2014 Contents 1 Why use TAPI? 3 2 Features 5 3 Dependencies 7 4 Installation 9 5 Quick Start 11 6 User Guide 13 6.1 Fundamentals...............................................

More information

How To Think Like A Computer Scientist, chapter 3; chapter 6, sections

How To Think Like A Computer Scientist, chapter 3; chapter 6, sections 6.189 Day 3 Today there are no written exercises. Turn in your code tomorrow, stapled together, with your name and the file name in comments at the top as detailed in the Day 1 exercises. Readings How

More information

Request for Comments: 913 September 1984

Request for Comments: 913 September 1984 Network Working Group Request for Comments: 913 Mark K. Lottor MIT September 1984 STATUS OF THIS MEMO This RFC suggests a proposed protocol for the ARPA-Internet community, and requests discussion and

More information

TangeloHub Documentation

TangeloHub Documentation TangeloHub Documentation Release None Kitware, Inc. September 21, 2015 Contents 1 User s Guide 3 1.1 Managing Data.............................................. 3 1.2 Running an Analysis...........................................

More information

STEAM Clown & Productions Copyright 2017 STEAM Clown. Page 1

STEAM Clown & Productions Copyright 2017 STEAM Clown. Page 1 What to add next time you are updating these slides Update slides to have more animation in the bullet lists Verify that each slide has stand alone speaker notes Page 1 Python 3 Running The Python Interpreter

More information

edeposit.amqp.antivirus Release 1.0.1

edeposit.amqp.antivirus Release 1.0.1 edeposit.amqp.antivirus Release 1.0.1 February 05, 2015 Contents 1 Installation 3 1.1 Initialization............................................... 3 2 Usage 5 3 Content 7 3.1 Standalone script.............................................

More information

: Intro Programming for Scientists and Engineers Final Exam

: Intro Programming for Scientists and Engineers Final Exam Final Exam Page 1 of 6 600.112: Intro Programming for Scientists and Engineers Final Exam Peter H. Fröhlich phf@cs.jhu.edu December 20, 2012 Time: 40 Minutes Start here: Please fill in the following important

More information

The Impact of Django. Armin Ronacher. djangocon europe 2011

The Impact of Django. Armin Ronacher. djangocon europe 2011 The Impact of Django Armin Ronacher djangocon europe 2011 http://lucumr.pocoo.org/talks/ Traveling to the Past What did the World look like in July of 2005? The Year 2005 The initial release of Django

More information

Kivy Designer Documentation

Kivy Designer Documentation Kivy Designer Documentation Release 0.9 Kivy October 02, 2016 Contents 1 Installation 3 1.1 Prerequisites............................................... 3 1.2 Installation................................................

More information

Multicorn: writing foreign data wrappers in python. PostgreSQL Conference Europe 2013 Ronan Dunklau

Multicorn: writing foreign data wrappers in python. PostgreSQL Conference Europe 2013 Ronan Dunklau Multicorn: writing foreign data wrappers in python PostgreSQL Conference Europe 2013 Ronan Dunklau Table des matières 1Multicorn: writing foreign data wrappers in python...4

More information

DRUPAL CON NASHVILLE 2018 DRUPALCON NASHVILLE

DRUPAL CON NASHVILLE 2018 DRUPALCON NASHVILLE DRUPAL CON NASHVILLE 2018 DRUPALCON NASHVILLE DRUPAL CON NASHVILLE 2018 Drupal 8: Let s dive into PHPUnit testing. Drupal 8: Let s dive into PHPUnit testing. Sugandh Khanna Srijan, INDIA Drupal CON NASHVILLE

More information

Configuring Microsoft Outlook to Connect to Hosted Exchange Service

Configuring Microsoft Outlook to Connect to Hosted Exchange Service Configuring Microsoft Outlook to Connect to Hosted Exchange Service Configuring Microsoft Outlook for Hosted Exchange Service Version: 1.0 Updated on: April 27, 2011 Page 1 of 7 TABLE OF CONTENTS Configuring

More information

Client Side JavaScript and AJAX

Client Side JavaScript and AJAX Client Side JavaScript and AJAX Client side javascript is JavaScript that runs in the browsers of people using your site. So far all the JavaScript code we've written runs on our node.js server. This is

More information

Python StatsD Documentation

Python StatsD Documentation Python StatsD Documentation Release 3.2.2 James Socol Dec 15, 2017 Contents 1 Installing 3 2 Contents 5 2.1 Configuring Statsd............................................ 5 2.2 Data Types................................................

More information

Python Unit Testing and CI Workflow. Tim Scott, Python Meetup 11/07/17

Python Unit Testing and CI Workflow. Tim Scott, Python Meetup 11/07/17 Python Unit Testing and CI Workflow Tim Scott, Python Meetup 11/07/17 A Little About Me Started as a CoOp Engineer (2007-2008) and Design Engineer at Adtran (2010-2014) Currently work at Abaco Systems

More information