東山n条より

京都在住情報系学生のメモ。

Python のテストフレームワーク nose の setup teardown のまとめ

Python のテストフレームワーク nose を使ってテストを書く時に, setup と teardown がいつ実行されるかがよくわからなかったので,まとめました.

まとめ

各テストケースの前後に setup/treadown を行いたい場合 -> クラスを使う
テストを行う前後1回だけ setup/teardown を行いたい場合 -> モジュールを使う

各テストケースの前後に setup/treadown を行いたい場合

クラスを使ってテストを書きます。

#! /usr/bin/env python
#-*- encoding: utf-8 -*-

import nose

class TestMyUtillClass:

    def out(self, message):
        debug_file = open('debug4class.txt', 'a')
        debug_file.write(message + "\n")
        debug_file.close()
        
    def setup(self):
        self.out("setup")
            
    def test_one(self):
        self.out(__name__)
                

    def test_two(self):
        self.out(__name__)

    def teardown(self):
        self.out("teardown")

これを実行すると,結果は以下のようになります.

$ cat debug4class.txt
setup
TestMyUtillClass
teardown
setup
TestMyUtillClass
teardown

テストを行う前後1回だけ setup/teardown を行いたい場合

モジュールを使ってテストを書きます.

#! /usr/bin/env python
#-*- encoding: utf-8 -*-

import nose

def out(message):
    debug_file = open('debug4module.txt', 'a')
    debug_file.write(message + "\n")
    debug_file.close()

def setup():
    out("setup")

def test_one():
    out(__name__)
    

def test_twot():
    out(__name__)

def teardown():
    out("teardown")

これを実行すると,結果は以下のようになります.

$ cat debug4module.txt
setup
TestMyUtill
TestMyUtill
teardown

参考にさせて頂いたサイト

[Python] nose まとめ3 (nose のsetup/teardown)

CentOS5.6 で emacs23 を yum を使ってインストールする

CentOS5.6 のデフォルトでは emacs のバージョンは 21 なので,自分の .emacs が動かない. なので emacs23 を yum を使って入れる.

emacs23 がある yumレポジトリ を追加する

/etc/yum.repos.d/puias-unsupported.repo を作って以下の内容を書き込む.

[puias-unsupported]
name=PUIAS Unsupported
baseurl=http://puias.math.ias.edu/data/puias/unsupported/5/i386/
enabled=1
gpgcheck=0

emacs23 を yum を使ってインストールする

sudo yum install emacs23

・参考にさせて頂いたサイト
LINUX PACKAGES SEARCH | emacs23-23.2-5.i386.rpm Download

web上でロゴ自動生成 - Create your own Logo on DesignMantic -

DesignMantic を使った理由

研究室などに自分の本を持って行く時に、研究室の本と混じらないように本に貼る用のロゴを作りました。

f:id:Shtr28:20130330204528p:plain

オンラインでロゴを作るサービスは色々あるのですが,最終的に DesignMatic を使う事にしました。理由としてはこんな感じです。

  • テキストを入れるだけでとても簡単。
  • 好きなカラーのロゴが作れる。
  • ロゴが無料でも作れる。 Blog に200文字以上の記事をポストすると無料!!
    -- 2013/4/6 に追記 --
    無料で使えるブログに記事を書いてもダメだそうです…。自分で運営しているブログじゃないとダメらしいです。 *1

  • ロゴに入れる絵が豊富でかわいい。

ロゴ作成手順

  • 画面1

f:id:Shtr28:20130330210147p:plain

  • 画面2

f:id:Shtr28:20130330211159p:plain

  • 画面3

f:id:Shtr28:20130330212129p:plain

  • 画面4

f:id:Shtr28:20130330212327p:plain

* 画面5

f:id:Shtr28:20130330212653p:plain

無料ダウンロードするための条件は,
1. ブログに designmantic.com について書く
2. すくなくとも 200 文字以上書く
3. 全く新しいブログは認められません
4. ブログ記事のURLを送信する
です。URLを送信した後に サポートチームが72時間以内に確認してOKが出た場合は My Designs ページからロゴをダウンロードします。

  • My Designs 画面

f:id:Shtr28:20130330213413p:plain

こんな感じでダウンロードできるはずです。多分...。
僕もこの記事で無料ダウンロードできるか、試しているところなのでまだダウンロードできてないですが...。

*1: 問い合わせた所、以下の文章が送られてきました。
We regret to inform that your submitted URL’s doesn’t qualify to our requirements. Adding text on free micro blogs/websites is not approved. 
Blog URL: http://shtr28.hatenablog.com/entry/designmantic-or
We kindly request you to add text (minimum 200 words) on a running blog or a website that you own and provide us the link. Once approved, we will activate the download feature for your designed logo.

CentOS5.6 で git を yum を使ってインストールする

研究室で使うデスクトップが CentOS5.9 になったので開発環境を整え中。

CentOS5.9 のデフォルトで追加されている yum レポジトリには git が入っていない。 そこで、レポジトリの追加を行ってから git を yum を使ってインストールする。

1.yum に git の入ったレポジトリの追加

プロキシの設定で少しつまった。自分の環境変数にはプロキシを設定しているのだが、 sudo する時にはその環境変数は見てくれない。

そこで wget には直接プロキシを設定するオプションはないのだが,

-e,  --execute=COMMAND   execute a `.wgetrc'-style command.

このオプションを使うことで解決した。

sudo wget -e `http_proxy=[adress]:[port]` http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm  
sudo rpm -Uvh rpmforge-release-0.5.2-2.el5.rf.i386.rpm

2.yum を使って git のインストール

後は yum を使って git をインストールするだけ。

sudo yum install git

・参考にさせて頂いたサイト
開発リソース/unix/wgetでコマンドラインからproxyを指定する
CentOS5.8にgitをインストールするまでにはまったこと

JSON と YAML を Ruby で変換する。

JSON と YAML を変換するフィルターを Ruby で作成する。

必要なgemfile

json と yaml の gem が必要なのでインストールする。

gem install json
gem install yaml

JSON To YAML

require 'json'
require 'yaml'
print JSON.parse(STDIN.read).to_yaml

YAML to JSON

require 'json'
require 'yaml'
print YAML::load(STDIN.read).to_json

・参考にさせて頂いたサイト
Convert between XML, Hash, YAML, JSON in Ruby - Conversion Cheat Sheet

Windows Azure 仮想マシン(CentOS 6.3) で gcc RVM Rails をインストール

Windows Azure 上の仮想マシン CentOS 6.3 で gcc RVM Rails の環境設定をしたのでメモ。

必要なライブラリのインストール

$ sudo yum install -y git zlib-devel perl-ExtUtils-MakeMaker httpd httpd-devel openssl-devel libyaml-devel libxml2-devel libxslt-devel libffi-devel readline-devel pcre-devel iconv-devel sqlite-devel mysql mysql-server mysql-devel postgresql postgresql-server postgresql-devel curl-devel nkf

後々,これをしないと gem を行った時に

It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.

と lib-yaml がないよ,と怒られるので lib-yaml をインストールする.
デフォルトのレポジトリには libyaml がないので追加してインストールする.

$ rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
$ yum install libyaml-devel

gcc のインストール

Windows Azure仮想マシン CentOS 6.3 では,デフォルトで gcc が入っていない. このままでは rvm で ruby をインストールする際に c-compiler が無いよ,と怒られるので,gcc をインストールする.

しかし,そのまま yum でインストールするしようとすると,

$ yum install gcc
-------略-------
Error: Package: glibc-headers-2.12-1.80.el6_3.7.x86_64 (updates)
           Requires: kernel-headers
Error: Package: glibc-headers-2.12-1.80.el6_3.7.x86_64 (updates)
           Requires: kernel-headers >= 2.2.1
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

kernel-header がないと怒られるので,kernel-header をインストールしてから gcc をインストールする.

$ sudo yum --disableexcludes=main install kernel-headers-2.6.32-279.14.1.el6.openlogic.x86_64
$ sudo yum install gcc

RVM のインストール

ホームディレクトリで RVM のインストールする.

$ cd ~
$ bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
$ source ~/.bash_profile

Rails のインストール

後は,rvm と gem を使って rails をインストールするだけ.

$ rvm install 1.9.3
$ rvm use 1.9.3 
$ gem install rake
$ gem intsll rails

以上!

マイクロソフトエバンジェリストの方に教えてもらいながら作業しました.
gcc のインストールでハマるようです.

・参考にさせて頂いたサイト
CentOSにRVMと最新版Ruby&Railsをインストールする
Windows Azure 仮想マシンで Redis をビルドして動かす
Ruby 1.9.3で "missing psych"