background preloader

Test-Driven Development with Python

Test-Driven Development with Python
Test-Driven Development with Python Test-Driven Development with Python Harry Percival Gillian McGarvey Rebecca Demarest Wendy Catalano Randy Comer David Futato Copyright © 2014 Harry Percival Printed in the United States of America. O’Reilly books may be purchased for educational, business, or sales promotional use. Nutshell Handbook, the Nutshell Handbook logo, and the O’Reilly logo are registered trademarks of O’Reilly Media, Inc. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. While every precaution has been taken in the preparation of this book, the publisher and authors assume no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein. Praise for Test-Driven Development with Python Table of Contents © 2013, O’Reilly Media, Inc. Related:  DevOps

Making good use of random in your python unit tests Writing efficient UnitTest to validate that your code performs as expected is a difficult endeavor. Lot has been written about the benefits of Test Driven development and on how to best approach testing, and lot can be learned reading the available litterature. One thing however that we don’t see often mentionned is that architecting efficient UnitTest is pretty hard and that no tools or testing framework are of much value without a fair understanding of the code base that needs to be tested. The techniques we will be briefly introducing now are no different. You may use them to impress your colleagues and show them TestSuite you have just written that contains millions of tests. Basic idea Assumes you wish to provide tests for an hypothetical func_to_test that looks like so : def func_to_test(x, y): ... return result To proceed with unit testing func_to_test, our first goal is to generate values that optimally covers the expected domain. Be repeatable TestCase factories

PyQt4 tutorial This is PyQt4 tutorial. The tutorial is suited for beginners and intermediate programmers. After reading this tutorial, you will be able to program non trivial PyQt4 applications. PyQt5 tutorial is the successor of this tutorial. Table of contents E-book A unique e-book covering advanced features of the PyQt4 library: Advanced PyQt4 tutorial. Related tutorials To refresh your knowledge of the Python language there is a Python tutorial on ZetCode. wxPython tutorial, PyGTK tutorial and Tkinter tutorial are tutorials for other popular Python GUI bindings. 1.3. A Quick Tour — Buildbot 0.9.12 documentation 1.3.1. Goal This tutorial will expand on the First Run tutorial by taking a quick tour around some of the features of buildbot that are hinted at in the comments in the sample configuration. As a part of this tutorial, we will make buildbot do a few actual builds. This section will teach you how to: make simple configuration changes and activate themdeal with configuration errorsforce buildsenable and control the IRC botenable ssh debuggingadd a ‘try’ scheduler 1.3.2. Let’s start simple by looking at where you would customize the buildbot’s project name and URL. We continue where we left off in the First Run tutorial. Open a new terminal, and first enter the same sandbox you created before (where $EDITOR is your editor of choice like vim, gedit, or emacs): cd ~/tmp/bb-master source sandbox/bin/activate $EDITOR master/master.cfg Now, look for the section marked PROJECT IDENTITY which reads: After making a change go into the terminal and type: 1.3.3. This creates a Python SyntaxError. 1.3.4. Note

So You’d Like To Make a Map Using Python Making thematic maps has traditionally been the preserve of a ‘proper’ GIS, such as ArcGIS or QGIS. While these tools make it easy to work with shapefiles, and expose a range of common everyday GIS operations, they aren’t particularly well-suited to exploratory data analysis. In short, if you need to obtain, reshape, and otherwise wrangle data before you use it to make a map, it’s easier to use a data analysis tool (such as Pandas), and couple it to a plotting library. This tutorial will be demonstrating the use of: PandasMatplotlibThe matplotlib Basemap toolkit, for plotting 2D data on mapsFiona, a Python interface to OGRShapely, for analyzing and manipulating planar geometric objectsDescartes, which turns said geometric objects into matplotlib “patches”PySAL, a spatial analysis library Package installation This tutorial uses Python 2.7.x, and the following non-stdlib packages are required: IPythonPandasNumpyMatplotlibBasemapShapelyFionaDescartesPySAL Running the Code Obtaining a basemap

Changing Between Spaces and Tabs in Sublime Text Sublime Text is pretty dang good at making it easy to switch between using tabs and spaces to indent your code. More importantly, it makes it easy to adjust the indentation of code that doesn't match your preference. I thought I'd put this together for reference, as there is a particular sequence of steps for some of the transitions that needs to be followed. The first step is making sure your User Preferences are how you like them. I prefer spaces, so my settings are like this: Adjust to your liking there. You can override these settings on any given file, from the bottom right. This is also headquarters for fixing up a document that isn't how you like it. Changing from Tabs to Spaces (Same Level of Indentation) Here's a document that is in tabs right now. You can see that those Tabs are 2 spaces wide. And I'm good to go for that case. Changing from Tabs to Spaces (Different Level of Indentation) Let's say a straight conversion from tabs to spaces isn't going to do it for me. .editorconfig

An Extended Introduction to the nose Unit Testing Framework Welcome! This is an introduction, with lots and lots of examples, to the nose unit test discovery & execution framework. If that's not what you want to read, I suggest you hit the Back button now. The latest version of this document can be found at (Last modified October 2006.) A unit test is an automated code-level test for a small "unit" of functionality. (There's lots of discussion on whether unit tests should do things like access external resources, and whether or not they are still "unit" tests if they do. Unit tests are almost always pretty simple, by intent; for example, if you wanted to test an (intentionally naive) regular expression for validating the form of e-mail addresses, your test might look something like this: EMAIL_REGEXP = r'[\S.] There are a couple of ways to integrate unit tests into your development style. It's pretty common to write tests for a library module like so: "Why use nose in particular?" First, install nose.

Python Programming Python Programming From Wikibooks, open books for an open world Jump to: navigation, search This book describes Python, an open-source general-purpose interpreted programming language available for a broad range of operating systems. There are currently three major implementations: the standard implementation written in C, Jython written in Java, and IronPython written in C# for the .NET environment. There are two common versions currently in use: 2.x and 3.x. Contents[edit] Intro[edit] Overview Getting Python Setting it up Interactive mode Self Help Basics[edit] Creating Python programs Variables and Strings Basic syntax Sequences (Strings, Lists, Tuples, Dictionaries, Sets) Data types Numbers Strings Lists Tuples Dictionaries Sets Basic Math -- redundant to "Operators" Operators Control Flow Decision Control Conditional Statements Loops Functions Scoping Input and output Files Text Modules Classes Exceptions Errors Source Documentation and Comments Idioms Advanced[edit] Decorators Context Managers Reflection Metaclasses Email Qt4

Continuous Integration - Full Stack Python Continuous integration automates the building, testing and deploying of applications. Software projects, whether created by a single individual or entire teams, typically use continuous integration as a hub to ensure important steps such as unit testing are automated rather than manual processes. Why is continuous integration important? When continuous integration (CI) is established as a step in a software project's development process it can dramatically reduce deployment times by minimizing steps that require human intervention. Automated testing Another major advantage with CI is that testing can be an automated step in the deployment process. The automated testing on checked in source code can be thought of like the bumper guards in bowling that prevent code quality from going too far off track. Continuous integration example The following picture represents a high level perspective on how continuous integration and deployment can work. Open source CI projects Jenkins CI resources

How to Tango with Django: A Python Django Tutorial

Related: