[PYTHON] Webserver zum Testen des Browsers mit Mocha

Ich habe es mit einem Befehl wie "buster static" geschrieben, in der Hoffnung, einen Webserver zum Testen und Debuggen einzurichten. Wirf dieses Skript in ein Verzeichnis, in dem sich PYTHONPATH befindet. python -m mocha_server lib/*.js test/*.js Starten Sie den Webserver im aktuellen Verzeichnis mit. Zum Ausführen benötigen Sie ein Framework namens python2 (3 ist nicht möglich) und Flask.

mocha_server.py


#!/usr/bin/env python
# coding: utf-8
"""
Mocha server

usage:
    $ python mocha_server.py lib/*.js test/*.js
    or
    $ python -m mocha_server lib/*.js test/*.js
"""
PORT = 8008

import sys
import os
import urllib
import threading
import mimetypes
import flask
from flask import Flask, g, request, render_template_string, abort


sources = []

libs = {
    "/lib/jquery.js": "http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js",
    "/lib/mocha.js": "https://raw.github.com/visionmedia/mocha/master/mocha.js",
    "/lib/chai.js": "https://raw.github.com/chaijs/chai/master/chai.js",
    "/lib/mocha.css": "https://raw.github.com/visionmedia/mocha/master/mocha.css",
}

app = flask.Flask(__name__)


def main():
    try:
        sources[:] = [s.decode("utf-8") for s in sys.argv[1:]]
    except ValueError:
        sources[:] = [s.decode("shift_jis") for s in sys.argv[1:]]
    sources.sort(key=is_test)

    threads = []
    for lib in libs:
        t = threading.Thread(target=load_worker, args=[lib])
        t.daemon = True
        threads.append(t)
        t.start()

    for t in threads:
        t.join()

    app.run(port=PORT, debug=True)


def load_worker(libname):
    source = urllib.urlopen(libs[libname]).read()
    libs[libname] = source


def is_test(source):
    return os.path.basename(source).startswith("test") or \
           "test" in source.split(os.sep)


@app.route("/")
def index():
    return template.render(sources=sources, libs=libs.keys())


@app.route("/lib/<path:p>")
def lib(p):
    if request.path not in libs:
        abort(404)
    mime, _ = mimetypes.guess_type(request.path)
    return flask.Response(libs[request.path], mimetype=mime)


@app.route("/source")
def source_file():
    source = request.args["source"]
    if source not in sources or not os.path.exists(source):
        abort(404)
    mime, _ = mimetypes.guess_type(source)
    return flask.Response(open(source).read(), mimetype=mime)


template = app.jinja_env.from_string("""\
<!DOCTYPE html>
<html lang="ja">
    <head>
        <meta charset="utf-8">
        <title>mocha sample</title>
        {%- for lib in libs %}
        {%- if lib.endswith("css") %}
        <link href="{{ lib }}" rel="stylesheet">
        {%- else %}
        <script src="{{ lib }}"></script>
        {%- endif %}
        {%- endfor %}
        <script>
            mocha.setup("bdd");
            $(window).load(function() {
                mocha.run()
            });
        </script>
    </head>
    <body>
        <div id="mocha"></div>
        {%- for source in sources %}
        {%- if source.endswith("css") %}
        <link href="{{ url_for("source_file", source=source) }}" rel="stylesheet">
        {%- else %}
        <script src="{{ url_for("source_file", source=source) }}"></script>
        {%- endif %}
        {%- endfor %}
    </body>
</html>""")


if __name__ == '__main__':
    main()

Recommended Posts

Webserver zum Testen des Browsers mit Mocha
WEB-Scraping mit Python (für persönliche Notizen)
Dockerfile für RESTful MeCab Server mit mecab-ipadic-neologd
[Für Anfänger] Versuchen Sie Web Scraping mit Python
Python Web Content mit Lolipop billigen Server gemacht
Starten Sie mit Docker einen einfachen Python-Webserver
Starten Sie einen Webserver mit Python und Flask
Datenanalyse zur Verbesserung von POG 1 ~ Web Scraping mit Python ~
Erstellt durch Angabe der ID von Python GAE DataStore zu Testzwecken
HTTP-Server und HTTP-Client mit Socket (+ Webbrowser) - Python3
TFTP-Server mit Docker
Techniken zum Testen von Code?
Kommentar zum Aufbau des Webservers
One Liner Webserver
Ubuntu (18.04.3) Webserverkonstruktion
Proxyserver mit Docker
Testen von Elasticsearch mit Python-tcptest
Frohe Weihnachten Webserver
Lokaler Server mit Python
Richten Sie einen Webserver mit CentOS7 + Anaconda + Django + Apache ein
Erstellen Sie mit Falcon einen Light-Speed-Web-API-Server
Wenn Sie auf den Webserver zugreifen, L Chika mit Arduino
(Für Anfänger) Versuchen Sie, mit Django eine einfache Web-API zu erstellen
Bibliothek zur Angabe eines Nameservers in Python und Dig
Reduzieren wir den Arbeitsaufwand für die Servereinrichtung mit Ansible
Aggregieren Sie die täglichen Treffer pro Sekunde aus den Webserver-Protokollen in Python
Gibt das Ergebnis der morphologischen Analyse mit Mecab an einen WEB-Browser aus, der mit Sakura Server / UTF-8 kompatibel ist